Javascript 在AngularJS中加载模型并呈现内容后执行函数
在我的angular代码中,我在ajax中加载了一些数据,这些数据填充了我的模板,到目前为止还不错。。。 然后,一旦加载了数据,我想调用一个javascript函数 我找不到在呈现模板后进行回调的方法。我尝试了几项活动,但都没有成功 我的解决方案是在超时后调用javascript方法:Javascript 在AngularJS中加载模型并呈现内容后执行函数,javascript,ajax,angularjs,Javascript,Ajax,Angularjs,在我的angular代码中,我在ajax中加载了一些数据,这些数据填充了我的模板,到目前为止还不错。。。 然后,一旦加载了数据,我想调用一个javascript函数 我找不到在呈现模板后进行回调的方法。我尝试了几项活动,但都没有成功 我的解决方案是在超时后调用javascript方法: $http.post('url').success(function (data) { $timeout(function () {/* process data */ }, 200); });
$http.post('url').success(function (data) {
$timeout(function () {/* process data */ }, 200);
});
它似乎可以工作,但这是一个超时,没有任何东西可以保证在超时结束时所有内容都会被渲染。也许这只是因为我的电脑很快才起作用
是否有基于事件的解决方案?或者任何比这个更好的解决方案
我的解决方案的JSFIDLE:您需要$watch()
您的数据。因此,您可以尝试以下方法:
$http.post('url')
.success(function (data) {
$scope.postData = data;
});
//Watch the value of postData
$scope.$watch('postData', function () {
if ($scope.postData === undefined || $scope.postData === null || $scope.postData === "") {
return;
}
/*Else process your data*/
});
为什么要在success函数中设置超时?当成功函数执行时,数据已经存在。模板中使用了数据。数据可用,但模板尚未呈现。只需设置范围变量,模板呈现时数据就会出现。我已更新了JSFIDLE,以便您理解。数据是可用的,模板是呈现的,但我想在模板呈现后执行一些操作。如果你只是停留在角度范围内,这不会是一个问题。看到这把小提琴了吗。在控制器的作用域之外,您试图完成哪些不能在作用域内完成的任务?不起作用:我想在模板完全呈现之后执行某些任务,而不仅仅是在数据更改之后。@tibo这就是您想要的:不确定。仅当文档在第一次加载页面时准备就绪时,才会触发ready事件。我认为这不适用于我的情况,ajax加载。所以,您希望ajax完全加载,并且使用ajax调用返回的数据更新DOM,然后您想做些什么?没错!这就是我想做的