[英]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.state('not signed up', {
template: 'partials/newAccountStage.html',
controller: SignupCtrl
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.