模型在setTimeout中没有用ng-show改变

时间:2014-04-10 15:36:40

标签: javascript angularjs

尝试根据模型值(true,false)和ng-show切换div。与setTimeout一起,它不再起作用。是什么原因?

<div ng-app>
<div ng-controller="Ctrl">
    <div ng-show="abc">Div 1</div>
    <div ng-show="abc">Div 2</div>     
</div>
</div>

function Ctrl($scope) {
    setTimeout( function() {
        alert( "yeah" );
        $scope.abc = true;
    }, 1000 );
}

请参阅此fiddle

2 个答案:

答案 0 :(得分:1)

setTimeout不会触发摘要周期。您应该使用Angular的$timeout服务。

function Ctrl($scope, $timeout) {
    $timeout( function() {
        alert( "yeah" );
        $scope.abc = true;
    }, 1000 );
}

答案 1 :(得分:1)

使用$timeout代替,setTimeout不强制摘要,因为它不是有角度的,因此有角度不知道有什么变化,$timeout调用$scope.$apply()自动,从而通知观察者变化。