我是ng-include
- 带有名为NavCtrl
的控制器的导航栏,该控制器有一个用于侦听logout
功能和logoutError
字段的注销按钮。
logout
和logoutError
都只在模板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';
});
};
}
});