AngularJS ng-cloak类型策略用于远程加载的范围元素?

时间:2014-09-16 23:13:02

标签: angularjs

ng-cloak非常适合在编译完成之前延迟显示元素。

从服务器加载数据时是否存在隐藏元素的等效(或策略)?

简单示例:

<span>Name: {{item.name}}</span>

ng-cloak将确保在加载item.name之前隐藏它。但是如果控制器加载了item.name,例如从REST API开始,这将首先显示为“Name:”,然后再闪烁为“Name:John”。下面的控制器片段:

$scope.item = Item.get({item:"1234"});

也可能有不同的项目,以串行或并行方式加载:

$scope.item1 = Item.get({item:"1234"});
$scope.item2 = Item.get({item:"6789"});

这种方法有“原生角”吗?如果没有,最好的策略是什么?是仅将$scope.ready标志设置为false并设置为ng-show="ready",然后当控制器感觉所有内容都已加载时,执行$scope.ready = true;?有一些标准化的方法吗?

例如(使用async lib):

$scope.ready = false;
async.parallel([
    function(cb) {
      Item.get({item:"1234"}, function(item){$scope.item1 = item; cb();});
    },
    function(cb) {
      Item.get({item:"6789"}, function(item){$scope.item2 = item; cb();});
    }
],function(err) {
    $scope.ready = true;
});

1 个答案:

答案 0 :(得分:0)

ngCloak实际上只对初始页面加载有用。

对于所有其他情况,我建议简单ngShow / ngHide / ngIf

<span ng-show="ready">Name: {{item.name}}</span>