Javascript AngularJs:ng如果反应太晚
我正在使用ui.router,并在我的主html文件中包含如下导航:Javascript AngularJs:ng如果反应太晚,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我正在使用ui.router,并在我的主html文件中包含如下导航: <header ng-if-start="logedin()"></header> <navigation ng-if-end="logedin()"></navigation> 如果我在其中一个导航中单击注销,导航控制器将触发此功能: $rootScope.$on('$stateChangeStart', function(e, to) $scope.logout = fu
<header ng-if-start="logedin()"></header>
<navigation ng-if-end="logedin()"></navigation>
如果我在其中一个导航中单击注销,导航控制器将触发此功能:
$rootScope.$on('$stateChangeStart', function(e, to)
$scope.logout = function() {
store.remove('jwt');
$state.go('login');
}
问题出在$state.go之后导航没有隐藏,而是在刷新页面之后
我是否必须重新提交主索引模板/视图(以及如何重新提交)?或者我该如何解决这个问题呢?所以我自己解决了。很抱歉,没有提供logedin()方法
问题是:
$scope.logedin = function() {
return $rootScope.logedin
}
$rootScope.logedin
是在angular.module().run()
-函数中设置的
为了解决这个问题,我必须创建一个简单的getter/setter服务
angular.module('sample')
.service('sharedLogedIn', function () {
var property = true;
return {
getProperty: function () {
return property;
},
setProperty: function(value) {
property = value;
}
};
});
很高兴知道问题已经解决了。可能发生的情况是您的值没有传播。。。我可能会这样做以排除故障:
<header ng-if="loggedinBool"></header>
<navigation ng-if="loggedinBool"></navigation>
1) 将loggedin()值分配给作用域模型或服务属性(最好是loggedinBool),并查看这些值是否在注销后传播,从而更改loggedinBool值
2) 如果这不起作用,请尝试在loggout中使用$broadcast/$emit并捕获它以更改loggedinBool的值。这将自动提供双向绑定,否则请尝试$scope.digest()或$scope.apply()方法以查看值是否传播。ng if end
不需要logedin()
更改ng if end=“logedin”
只需ng if end
即可解决您的问题。不幸的是,不需要:(您可以将logedin()方法?您是否尝试过将ng if start=“logedin”
替换为ng show=“logedin”
?另外,您确定logedin
变为false吗?请尝试打印它,或使用扩展或开发工具检查角度范围。如果从dom中删除元素,同时销毁其范围,您在何处将logedin
设置为false?ng。