【发布时间】:2013-03-18 07:50:26
【问题描述】:
我正在尝试使用引导导航栏显示并删除来自角度控制器的数据的 html 元素被告。
我有以下玉码:
div.navbar.navbar-fixed-top
div.navbar-inner
div.container-fluid(data-ng-controller="NavCtrl")
a.btn.btn-navbar(data-toggle='collapse', data-target='.nav-collapse')
span.icon-bar
span.icon-bar
span.icon-bar
div.nav-collapse.collapse
ul.nav
li
a(href='/topics') Topics
li(ng-show="curUser.admin")
a(href='/users') Users
li(ng-show="curUser.admin")
a(href='/organizations') Organizations
li(ng-show="curUser.admin")
a(href='/topicConfs') TopicConfig
li.divider
ul.nav.pull-right
{{authenticated}}
li.dropdown(ng-show="authenticated")
a.dropdown-toggle(role='button', data-toggle='dropdown', href='#') {{curUser.email}}
b.caret
ul.dropdown-menu(role='menu')
li
a(href='/users/{{curUser._id}}') Profile
li.divider
li
a.btn(ng-click="logout()") Logout
还有一个控制器:
function NavCtrl($location, $scope, $rootScope, CurrentUser){
$scope.curUser = CurrentUser.getUser()
$scope.authenticated = CurrentUser.isAuthenticated()
$rootScope.$on('$routeChangeStart', function(){
$scope.curUser = CurrentUser.getUser()
$scope.authenticated = CurrentUser.isAuthenticated()
})
$scope.logout = function(){
CurrentUser.logout(function(result){
$scope.curUser = CurrentUser.getUser()
$scope.authenticated = CurrentUser.isAuthenticated()
console.log("authenticated before logout is %j", $scope.authenticated)
$location.url('/')
})
}
}
在$scope.authenticated 设置为false 和$scope.user 设置为{} 之前,所有内容都正确显示,其中导航栏中的ng-show 属性均未更新。
我需要做什么才能让引导导航元素响应 $scope 变量的变化?
【问题讨论】:
-
尝试拨打
$scope.$apply()。 -
谢谢。我如何给你一张支票作为答案?如果你能准确解释何时使用 $apply,那就太好了。
-
你能把完整的代码分享为 Plunkr 吗?
标签: javascript twitter-bootstrap angularjs pug navbar