在AngularJS绑定之后运行函数



我有一个简单的应用程序,它使用Angular运行一个HTTP GET请求,然后将返回的数据设置为一个使用ng-repeat绑定到DOM的数组,我想运行一些代码,在它被放置到body后操纵这个DOM。实现这一目标的最佳方式是什么?

            $http({
                method: 'GET',
                url: 'https://www.*******.com/WebApi/Alert/Items/all',
                cache: false
            })
            .success(function (data, status) {
                $scope.alerts = data.result.Alerts;
                jQuery('.aWidget').iconalt(); // THIS IS THE CODE I WANT TO RUN
            })
            .error(function (data, status) {
                console.log(data);
                alert("error");
            });

看,我想在所有DOM放入文档后运行jQuery('.aWidget').iconalt()行。现在,这一行执行得太快了,所以它"认为"DOM

中没有.aWidget元素。

是否有某种回调,我可以注入到AngularJS得到调用后DOM加载?

您遇到了摘要循环,该循环直到代码返回才结束。所以你真正需要的是返回,但之后运行一段代码。有一个常见的JavaScript技巧可以做到这一点:

// I used Angular's $timeout, but you can use setTimeout() just as easily...
$timeout(function() {
    jQuery('.aWidget').iconalt();
}, 50);

还有一个非常酷的模块叫做setimmedium .js,它填充了现代浏览器中的"setimmedium"函数。这个技巧使用得如此频繁,以至于浏览器制造商意识到他们应该提供一种快速、"正确"的执行方式。你的代码可能不需要在50毫秒之后运行——用户永远不会注意到……但是如果你正在做一些事情,你可以使用这个工具在"下一个滴答"上运行一个任务,所以使用这个技巧不会影响性能。

最新更新