$ scope不在ng-include内更新(没有使用父变量)

时间:2014-04-29 12:37:10

标签: javascript angularjs

我是ng-include - 带有名为NavCtrl的控制器的导航栏,该控制器有一个用于侦听logout功能和logoutError字段的注销按钮。

logoutlogoutError都只在模板partial(nav.html)中使用。 partial不使用父级的任何范围变量,反之亦然。

logout函数在单击时工作正常,但logoutError不会更新以反映来自服务器的无效注销响应。范围变量在加载时工作正常,它们不会第二次更新。

我无法弄清楚为什么会这样。

代码在这里:

nav.html

<div ng-controller="NavCtrl">
  <!-- Nav Bar Stuff -->
          <li><a href="#" ng-click="logout()" ng-hide="logoutRequestInProgress">Logout</a></li>
  <!-- More Nav Bar Stuff -->

  <!-- logoutError here doesn't update, but loads correctly when the page is first rendered -->
  <div class="alert alert-danger alert-dismissable" ng-show="logoutError">
    <strong>Logout Failed!</strong> {{ logoutError }} 
  </div>
</div>

nav.js

'use strict';

app.controller('NavCtrl', function ($scope, $window, $location, AuthService) {
  if ($window.localStorage.token) {
    $scope.logout = function () {    
      // Reset error vars
      $scope.logoutError = null;
      AuthService.logout().then(function() {
        // success stuff 
      }, function (response) {
        // !!! THIS UPDATE DOESNT WORK !!!
        $scope.logoutError = 'Server Error';
      });
    };
  }
});

0 个答案:

没有答案