在我将更改添加到 $scope 变量(在本例中为 $scope.results)后,我正在寻找一种执行代码的方法。我需要这样做是为了调用一些需要项目在 DOM 中才能执行的遗留代码。
我的真实代码是触发 AJAX 调用,并更新范围变量以更新 ui。所以我目前我的代码在我推送到范围后立即执行,但是由于 dom 元素尚不可用,遗留代码失败了。
我可以用 setTimeout() 添加一个难看的延迟,但这并不能保证 DOM 真的准备好了。
我的问题是,有什么方法可以绑定到类似“渲染”的事件?
var myApp = angular.module('myApp', []);
myApp.controller("myController", ['$scope', function($scope){
var resultsToLoad = [{id: 1, name: "one"},{id: 2, name: "two"},{id: 3, name: "three"}];
$scope.results = [];
$scope.loadResults = function(){
for(var i=0; i < resultsToLoad.length; i++){
$scope.results.push(resultsToLoad[i]);
}
}
function doneAddingToDom(){
// do something awesome like trigger a service call to log
}
}]);
angular.bootstrap(document, ['myApp']);
链接到模拟代码:http: //jsfiddle.net/acolchado/BhApF/5/
提前致谢!