我正在尝试更改范围变量:$scope.tab
每次窗口调整大小并$scope.tab == 'more'
。
代码:
$scope.closeMoreTab = function() {
if($scope.tab == 'more')
$scope.tab = 'extras';
};
angular.element($window).bind('resize', function() {
$scope.closeMoreTab();
});
嗯,它真的在调用$scope.closeMoreTab()
,它实际上正在改变$scope.tab
变量,但实际上它并没有改变视图上的任何内容。
我试过了:
console.log($scope);
要检查变量tab
,它确实更改为'extras',但是当我这样做时:
<div>{{ tab }}</div>
它向我显示当前标签变量仍然是“更多”
请帮忙。我坚持了1个小时,不知道为什么会发生这种情况或者做什么。
非常感谢
答案 0 :(得分:6)
您应该将$scope.closeMoreTab();
包装到$scope.$apply
函数中,因为这当前会更改值,但不会触发摘要周期:
angular.element($window).bind('resize', function() {
$scope.$apply(function() {
$scope.closeMoreTab();
});
});
答案 1 :(得分:-1)
您可以尝试将变量添加到$watch
,因为只要调用该变量的值变化$apply
,调用$apply
就会处理$digest
循环