簡體   English   中英

更改路線時更改控制器中的變量?

[英]Changing variables in controller on route change?

我有一個模板和一些根據其路線呈現的視圖:

popApp.controller('HomeCtrl', ['$scope', '$routeParams', '$http', function($scope, $routeParams, $http) {    
  $scope.showNow = true;
}]);

app.config(['$routeProvider', function($routeProvider) {
  $routeProvider
    .when('/signup', {
      controller:'HomeCtrl',
      templateUrl:'partials/newAccountStage.html'
    })
    .when('/', {
      controller:'HomeCtrl',
      templateUrl:'partials/home.html'
    });
}]);

在我的模板中,我會顯示大部分時間想要顯示的一些元素,但是在遵循某些路線時會隱藏它們:

<div ng-show="showNow"></div>

基本上,當用戶在/ signup路線上時,我想隱藏一些元素。

解決這個問題的最有角度的方法是什么?

分離所需的任何主視圖的控制器是一種眾所周知的做法。 您可以使用$routeProvider ,如圖所示。

popApp.controller('HomeCtrl', [
    '$scope', 
    '$routeParams', 
    '$http', 
    function($scope, $routeParams, $http) {    
        $scope.showNow = true;
    }
]);

popApp.controller('SignupCtrl', [
    '$scope', 
    '$routeParams', 
    '$http', 
    function($scope, $routeParams, $http) {    
        $scope.showNow = true;
    }
]);

app.config(['$routeProvider', function($routeProvider) {
  $routeProvider
    .when('/signup', {
      controller:'SignupCtrl',
      templateUrl:'partials/newAccountStage.html'
    })
    .when('/', {
      controller:'HomeCtrl',
      templateUrl:'partials/home.html'
    });
}]);

另一種做法是使用$stateProvider ,如果您在另一個控制器中具有此注冊功能,並且如果用戶尚未注冊並且要更改頁面的“狀態”,則希望使屏幕呈現不同的$stateProvider 然后SignupCtrl將成為狀態HomeCtrl ,在那里你會設置狀態為“未注冊”,它可以使用SignupCtrl。

這是$ stateProvider的鏈接。

以及該語法的外觀示例:

$stateProvider.state('not signed up', {
  template: 'partials/newAccountStage.html',
  controller: SignupCtrl
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM