Javascript AngularJS引导导航栏

Javascript AngularJS引导导航栏,javascript,twitter-bootstrap,angularjs,pug,navbar,Javascript,Twitter Bootstrap,Angularjs,Pug,Navbar,我正在尝试引导navbar显示,并从angular控制器中删除数据上的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')

我正在尝试引导navbar显示,并从angular控制器中删除数据上的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属性


我需要做什么才能使引导nav元素响应
$scope
变量中的更改?

当Angular$scope属性在Angular的“外部”更改时,需要调用
$scope.$apply()
,以使Angular输入其属性。投影到当前视图上的任何属性都将有$watchs,摘要循环将对其进行计算。当在其中一个$watch中检测到更改时,视图将更新

角度传感器的“外部”示例:

  • 浏览器事件回调。例如,
    元素.bind('someEvent',function(){

    //需要调用作用域。$apply in here

    })
  • 第三方插件回调。例如,传递给上述注销的回调
  • 第三方AJAX回调
  • 第三方承诺

尝试调用
$scope.$apply()
。谢谢。我怎么给你支票作为答复?如果您能准确地解释何时使用$apply,那就太酷了。您能将完整的代码作为Plunkr共享吗?