请看小提琴: http://jsfiddle.net/HB7LU/4089/
如果您检查控制台,则在窗口调整大小上,$scope.showName
会按预期在true和false之间切换。但是视图不会更新。它的初始值为true。
根据我的理解,{{}}
或ng-bind
提供从控制器到视图的1路绑定,因此视图中的值应在控制器中发生更改时更新。
我错过了什么?
答案 0 :(得分:6)
$scope
仅绑定$digest
个周期的视图 - 由于没有采取任何操作,您的事件不会触发摘要周期。您必须致电$scope.$apply()
以触发视图更新。
警告,$scope.$apply()
如果$digest
周期已在进行中,可能会抛出错误。
答案 1 :(得分:1)
你缺少对$ scope的调用。$ apply()因为事件是在角度上下文之外处理的,你需要调用$ scope。$ apply()来触发一个摘要,它将更新任何观察者{{3 }}
function MyCtrl($scope, $window) {
$scope.name = 'Timothy';
$scope.showName = true
$scope.nickname = 'Tim'
angular.element($window).bind('resize', function() {
if ($scope.showName){
$scope.showName = false;
}
else
{
$scope.showName = true;
}
console.log($scope.showName);
$scope.$apply();
});
}
答案 2 :(得分:0)
在Angular事件之外的任何范围操作之后,您需要添加$scope.$apply();
。将其添加为bind
函数的最后一个语句。
答案 3 :(得分:0)
missing a call to $scope.$apply()
答案 4 :(得分:0)