如何等到数据分配给 Angularjs 中的模型?
How to wait till data is assigned to model in Angularjs?
我有一个模型,用于在我的视图中迭代和创建表格结构。我有一个按钮,点击它我必须从数据库中获取最新值并分配给模型。然后我得到模型的 innerHTML 并创建我当前视图的 pdf。
我遇到一个问题,在数据完全分配给模型和视图刷新之前,下一条语句获取容器 div 的 innerHTML 执行,我得到了我的视图的旧快照。在模型完成赋值和视图刷新之前,我如何保持语句的执行?
您应该将代码包装在 $timeout
中。这将确保您的代码在下一个周期中执行,并且您将获得最新的快照。
$timeout(function(){
<your code to get innerHtml>
})
无需提及任何超时值,因为一旦视图更改就会调用此值
PS: 添加$timeout
作为依赖。
我会使用 angular 中的 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;
}
});
我有一个模型,用于在我的视图中迭代和创建表格结构。我有一个按钮,点击它我必须从数据库中获取最新值并分配给模型。然后我得到模型的 innerHTML 并创建我当前视图的 pdf。
我遇到一个问题,在数据完全分配给模型和视图刷新之前,下一条语句获取容器 div 的 innerHTML 执行,我得到了我的视图的旧快照。在模型完成赋值和视图刷新之前,我如何保持语句的执行?
您应该将代码包装在 $timeout
中。这将确保您的代码在下一个周期中执行,并且您将获得最新的快照。
$timeout(function(){
<your code to get innerHtml>
})
无需提及任何超时值,因为一旦视图更改就会调用此值
PS: 添加$timeout
作为依赖。
我会使用 angular 中的 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;
}
});