在路线改变时改变控制器中的变量?

时间:2015-01-08 19:47:15

标签: javascript angularjs

我有一个模板和几个根据路线呈现的视图:

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>

基本上当用户在/注册路线上时,我想隐藏一些元素。

最接近角色的方式是什么?

1 个答案:

答案 0 :(得分:0)

将控制器分离到您想要的任何主视图是众所周知的做法。您可以使用$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,如果您在另一个控制器内部具有此注册功能,并且您想要在用户尚未注册并且您想要更改&的情况下呈现不同的屏幕#34;状态&#34;的页面。然后,SignupCtrl将成为HomeCtrl的状态,您可以将状态设置为“未注册”状态。它可以使用SignupCtrl。

Here's a link for $stateProvider.

该语法的示例如下:

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