[英]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.