Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用AngularJs防止屏幕闪烁?_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript 如何使用AngularJs防止屏幕闪烁?

Javascript 如何使用AngularJs防止屏幕闪烁?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我有多个从数据库获取数据的指令。在一个例子中,我把所有指令都放在一个屏幕上。这意味着,当屏幕加载每个下拉列表/字段时,会逐个填充:首先,您看到字段A是字段,然后字段B得到他的值,然后字段C等等。我不希望这样,我希望所有数据都立即显示 我怎样才能做到这一点 下面是一个指令示例。我有大约10条这样的指令 app.directive("environmentDropdown", ['EnvironmentService', function (EnvironmentService) { ret

我有多个从数据库获取数据的指令。在一个例子中,我把所有指令都放在一个屏幕上。这意味着,当屏幕加载每个下拉列表/字段时,会逐个填充:首先,您看到字段A是字段,然后字段B得到他的值,然后字段C等等。我不希望这样,我希望所有数据都立即显示

我怎样才能做到这一点

下面是一个指令示例。我有大约10条这样的指令

app.directive("environmentDropdown", ['EnvironmentService', function (EnvironmentService) {
    return {
        restrict: 'E',
        template: '<select class="form-control" data-ng-options="e.Id as e.Name for e in environments"></select>',
        scope: {
        },
        replace:true,
        link: function (scope, element, attributes) {
            EnvironmentService.getEnvironments().then(function (response) {
                scope.environments = response;
            });
        }
    }
}])
app.directive(“environmentDropdown”,['EnvironmentService',函数(EnvironmentService){
返回{
限制:'E',
模板:“”,
范围:{
},
替换:正确,
链接:功能(范围、元素、属性){
EnvironmentService.getEnvironments().then(函数(响应){
scope.environments=响应;
});
}
}
}])

为此,我使用


它会使元素变得不可见,然后放置标记,直到整个页面加载为止

因为您没有告诉我们指令如何检索数据,所以我假设您使用
$http
请求

您可以这样做:

  var promises = []
  for (var i = 0; i < requests.length; i++) {
    var req = requests[i];
    promises.push( $http.post(url, req) )
  }

  $q.all(promises)
    .then(function (data) {
      $scope.fields = data
    })
var承诺=[]
对于(var i=0;i
您可以在加载视图之前获取所有数据:

 app.config(['$routeProvider', function($routeProvider) {
$routeProvider.
    when('/', {templateUrl: 'home.html', controller: 'MyCtrl',resolve: {
        myData: function($q,$http){
            var deffered = $q.defer();

                // make your http request here 
                // store the result in a shared service

            return deffered.promise;
        }
    }}).
    otherwise({redirectTo: '/'});
}]);
然后可以在需要的地方注入myData,其中包含数据


另请参见:

每个下拉列表都有多个后端调用吗?@Michael查看我的更新post@martijn你试过我给你的答案了吗?有用吗?恐怕我做不到。我用一个指令的例子更新了我的帖子。在我所有的指令中,我都在模板中添加了
ng-clope
。当加载我的页面时,我仍然看到所有的字段一个接一个地填充,而不是一次全部填充。你添加了吗!ng斗篷显示后的重要信息:无css规则?是的,我从文档中复制了css类,其中包括
!重要信息
零件。。