Angularjs在窗口大小调整时更改范围变量

时间:2014-11-04 13:34:40

标签: javascript angularjs scope

我正在尝试更改范围变量:$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个小时,不知道为什么会发生这种情况或者做什么。

非常感谢

2 个答案:

答案 0 :(得分:6)

您应该将$scope.closeMoreTab();包装到$scope.$apply函数中,因为这当前会更改值,但不会触发摘要周期:

angular.element($window).bind('resize', function() {
    $scope.$apply(function() {
        $scope.closeMoreTab();
    });
});

答案 1 :(得分:-1)

您可以尝试将变量添加到$watch,因为只要调用该变量的值变化$apply,调用$apply就会处理$digest循环