Javascript 更改路线更改时控制器中的变量?
我有一个模板和一些视图,它们是根据它们的路线渲染的:Javascript 更改路线更改时控制器中的变量?,javascript,angularjs,Javascript,Angularjs,我有一个模板和一些视图,它们是根据它们的路线渲染的: popApp.controller('HomeCtrl', ['$scope', '$routeParams', '$http', function($scope, $routeParams, $http) { $scope.showNow = true; }]); app.config(['$routeProvider', function($routeProvider) { $routeProvider .whe
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
,如果您在另一个控制器中具有此注册功能,并且如果用户尚未注册并且您希望更改页面的“状态”,则您希望呈现不同的屏幕。然后,SignupCtrl
将成为HomeCtrl
的状态,您可以将该状态设置为“未注册”,并且它可以使用SignupCtrl
下面是该语法的一个示例:
$stateProvider.state('not signed up', {
template: 'partials/newAccountStage.html',
controller: SignupCtrl
})
对2个html使用相同的控制器有点糟糕,因为需要额外的if来处理。你们可以通过观察路由更改事件来重置一些变量。我可能会考虑使用一个全局变量来处理这个问题。为了同意奥斯梅尔所说的,我将使用两个独立的控制器。如果需要在控制器之间共享代码,请使用工厂/服务。