我有一个$scope
变量isAuth
是一个boolean
,当用户登录时它将是真的。我使用此变量来显示使用ng-hide的页脚。我也有$routeProvider
服务的路由定义。 html代码有一个maincontroller
和一个由另一个控制器测试控制的子集。在用户使用服务的login()
功能登录后,我调用位置服务将用户路由到由不同控制器控制的'/ test'路径 - 测试。虽然“test”仅控制html文档的<ng-view>
部分,但文档的其余部分仍然使用maincontroller
。
我遇到的问题是即使$isAuth
函数中servicecall()
的值更新,它也不会反映在html中。
角色代码
ub.config(function($routeProvider){
$routeProvider
.when('/',{
templateUrl: '../pages/home.htm',
controller:'mainController'
})
.when('/test',{
templateUrl: '../pages/test.htm',
controller:'test'
})
var ub = angular.module('ub',['ngRoute']);
ub.controller('mainCtrl',['$scope','testsrv',function($scope,testsrv){
$scope.isAuth = false;
$scope.msg="";
$scope.servicecall = function(){
console.log('in service call function');
testsrv.login().then(function(response){
$scope.msg="in service call function";
$scope.isAuth = true;
$location.path('/test');
});
};//servicecall
}]);
ub.service('testsrv',['$q','$log',function($q,$log){
var self=this;
self.login = function(){
var def = $q.defer();
var msg='calling a service function';
$log.log(msg);
def.resolve(msg);
return def.promise;
};
}]);
HTML
<body ng-app='ub'>
<div ng-controller="mainCtrl">
<button ng-click="servicecall()">click me!</button>
<ng-view>
</ng-view>
<br>
{{isAuth}}
<br>
{{msg}}
</div>
</body>
答案 0 :(得分:0)
我通过将变量分配给$ rootScope服务解决了这个问题,因为$ rootScope.isAuth