如何等待数据分配给Angularjs中的模型?

时间:2016-07-01 11:17:16

标签: angularjs data-binding model angular-promise 2-way-object-databinding

我有一个模型,我用它来迭代并在我的视图上创建一个表格结构。我点击了一个按钮,我必须从DB获取最新值并分配给模型。然后我得到模型的innerHTML并创建我当前视图的pdf。

我面临的问题是,在将数据完全分配给模型和视图之前,刷新下一个语句以获取容器div的innerHTML,并获取我视图的旧快照。如果模型完成赋值并且视图已刷新,我怎样才能执行我的语句?

2 个答案:

答案 0 :(得分:1)

您应该将代码包装在$timeout中。这将确保您的代码在下一个周期执行,您将获得最新的快照。

$timeout(function(){
   <your code to get innerHtml>
})

没有必要提及任何超时值,因为一旦视图发生变化就会调用

PS:添加$timeout作为依赖。

答案 1 :(得分:0)

我会使用角度的ng-show并仅在数据加载到控制器中时显示你的内容:

HTML:
<div ng-app="myApp" ng-controller="myCtrl" data-ng-init="getValues()">
 <div ng-show="dataLoaded">
  <input type="number" ng-repeat="(key, value) in randomArray track by  $index" ng-model="randomArray[key]">

 </div>
</div>


CONTROLLER:
.controller('myCtrl', function($scope) {

  $scope.getValues = function() {

    $scope.randomArray = ['myKey', 'anotherKey', 'thirdKey', 'key4'];    
    angular.forEach($scope.randomArray, function(value, key){
      $scope.randomArray[key] = 0;
    });

    // Set dataLoaded to true
   $scope.dataLoaded = true;
  }

});

CODEPEN:http://codepen.io/giannidk/pen/KrmgNL?editors=1011