Javascript 在AngularJS中加载模型并呈现内容后执行函数

Javascript 在AngularJS中加载模型并呈现内容后执行函数,javascript,ajax,angularjs,Javascript,Ajax,Angularjs,在我的angular代码中,我在ajax中加载了一些数据,这些数据填充了我的模板,到目前为止还不错。。。 然后,一旦加载了数据,我想调用一个javascript函数 我找不到在呈现模板后进行回调的方法。我尝试了几项活动,但都没有成功 我的解决方案是在超时后调用javascript方法: $http.post('url').success(function (data) { $timeout(function () {/* process data */ }, 200); });

在我的angular代码中,我在ajax中加载了一些数据,这些数据填充了我的模板,到目前为止还不错。。。 然后,一旦加载了数据,我想调用一个javascript函数

我找不到在呈现模板后进行回调的方法。我尝试了几项活动,但都没有成功

我的解决方案是在超时后调用javascript方法:

$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,然后您想做些什么?没错!这就是我想做的