如何在angularjs模型绑定到视图后触发事件

时间:2013-05-23 18:42:04

标签: html binding angularjs

当我为angularjs的模型分配一个新值时,我注意到在使用新模型的数据刷新页面之前有一点延迟。特别是如果模型非常胖的话,就会发生这种情况。

我正在考虑显示一个遮罩div,而angularjs正在应用新模型进行查看。 有没有办法做到这一点?

基本上我想在angularjs完成将新模型应用到html视图时收到通知。

由于

1 个答案:

答案 0 :(得分:3)

假设您在控制器内部进行该工作,一个选项是在您的屏蔽元素上使用ng-show指令,如:

<div ng-controller="someCtrl">
    <div ng-show="loading">I'm a mask</div>
</div>

在您的应用中:

myApp.controller('someCtrl',function($scope,$timeout){
    function doHeavyLoading(){
        // do the loading here
        $scope.loading = false;
    }
    $scope.loading = true;
    $timeout(doHeavyLoading, 0)
});

这也可以在指令的控制器内完成。

编辑:正如@MarkRajcok指出的那样,由于javascript的单线程特性,$loading = true$loading = false之间不会有渲染。我添加了一个$timeout来推迟重载的执行,并给掩码提供渲染的机会。

小提琴: Working fiddle here 确保在小提琴加载后按“运行”,它将无法在首次加载时起作用,因为小提琴等待所有窗户要完成。