当我为angularjs的模型分配一个新值时,我注意到在使用新模型的数据刷新页面之前有一点延迟。特别是如果模型非常胖的话,就会发生这种情况。
我正在考虑显示一个遮罩div,而angularjs正在应用新模型进行查看。 有没有办法做到这一点?
基本上我想在angularjs完成将新模型应用到html视图时收到通知。
由于
答案 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 确保在小提琴加载后按“运行”,它将无法在首次加载时起作用,因为小提琴等待所有窗户要完成。