AngularJS изменить представление в ng-view с контроллера

0

У меня есть веб-приложение JavaScript, в котором я использовал AngularJS для облегчения работы, но теперь я столкнулся с небольшой проблемой.

Я хочу изменить viewfrom ng-controller. Я использую $ location.path для этого, но, к сожалению, ничего не происходит. Если я проверю объект $ location, путь будет изменен правильно, но представление не изменится.

У меня есть ng-view в моем Home.html. Это конфигурация, которую я написал для нее:

<html ng-app="app">
   ...
   <body>
      <div id="navigation-menu" ng-controller="NavigatorController">
          <a class="menulink" ng-class="{ active: isActive('/labels')}" href="#page2">Page2</a>
          <a class="menulink" ng-class="{ active: isActive('/labels')}" href="#page3">Page3</a>
      </div>

      <div ng-view></div>
   </body>
</html>

Это конфигурация, которую я сделал для $ routeProvider, который работает безупречно, когда используется в меню

myApp.config(function ($routeProvider) {
$routeProvider
    .when('/', {
        templateUrl: 'Page1.html',
        controller: 'Page1Controller'
    })
    .when('/page2', {
        templateUrl: 'Page2.html',
        controller: 'Page2Controller'
    })
    .when('/page3', {
        templateUrl: 'Page3.html',
        controller: 'Page3Controller'
    });
});

При открытии приложения я хочу показать page1.html в ng-view, так что, по-моему, это сортировка с помощью "/" url.

Проблема в том, что от любого другого контроллера я хочу иметь возможность вернуться к странице.html.

Я попытался сделать событие в каждом другом контроллере, например:

$scope.NavigateBack = function() {
    $location.path('/');
}

Это не работает, к сожалению. Я не получаю никаких сообщений об ошибках, хотя... Я пробовал его с разными адресами в пути, например "/page2", но ничего не получилось.

Что я делаю неправильно, что представление не меняется, а страница не перемещается?

  • 0
    должно работать нормально. Должен, как вы называете NavigateBack в поле зрения. Вы забыли использовать () или опечатка?
Теги:
ng-view
office-app

2 ответа

1
Лучший ответ

Я рекомендую использовать

$window.location = "#/"

но не забывайте вводить $ window вашему контроллеру

0

Определите поведение в Page Page2Controller, например:

$scope.goBack = function(){
        $location.path("#/");
    }

И добавьте некоторую кнопку внутри Page2.html:

<button ng-click="goBack()">Return</button>

Вам также может потребоваться изменить атрибуты href для ссылок навигации на #/page2 и #/page3

Ещё вопросы

Сообщество Overcoder
Наверх
Меню