Angular 1:在http调用后推迟html渲染

时间:2016-09-16 13:51:30

标签: javascript angularjs

在我的Angular控制器中,我有一个REST服务的http调用,它返回数据库中的数据。该数据显示在局部视图的表格中。

随机地发现html视图的渲染在获取数据回调之前完成,所以我看到一个void表。

这里是控制器中的代码(我使用某些业务逻辑的服务并实现http调用):

commonServices.find(vm.modelUri, null, vm.filter, function (err, msg, data) {

            if (err || !data.length) {
                $scope.noResults = true;
                return;
            }

            $scope.docs = data; //docs is bind in the view 
            return;
        });

这里是http呼叫的服务:

function _commonServices(config, $http, $rootScope, $cookies) {
      return {
            find: function _find(modelUri, id, filter, callback) {
                   var url = config.servicesUri + '/' + modelUri;

                   if (id) {
                      url += '/' + id;
                   }


                   if (filter) {
                   if (typeof filter !== 'string') {
                       filter = JSON.stringify(filter);
                   }

                   url += '?filter=' + filter;
                   if (document.cookie) {
                       url += '&' + accessToken;
                  }
                  } else {
                    if (document.cookie) {
                       url += '?' + accessToken;
                    }
                  }

                  $http.get(url)
                    .then(function (data) {
                    //success
                    return callback(null, null, data.data);
                   },
                   function (data) {
                       //error
                      var err = true;
                    return callback(err, data.data.error.message);
                  });
             }
      }

}

查找服务在其他控制器中使用,看起来效果很好。我知道是否可以推迟html表的渲染,直到数据准备好显示。

1 个答案:

答案 0 :(得分:0)

我建议使用Angular' s-cloak。它是一个指令,用于防止在您的角度应用程序加载完成之前显示html。在这里查看文档:{​​{3}}