在 ng-repeat div 标签之间,
我有div.cover_container.fetched
显示使用获取的数据的元素$http.get
我想在这些元素上附加事件处理程序,但我不能这样做,因为有时它们还没有完成加载。
负责附加事件处理程序的函数是activateGear
即使我将activateGear
成功部分放在里面,它activateGear
也并不总是有效,因为div.cover_container.fetched
在执行函数时不存在。
$http.get(url).success(function(data, status, headers, config) {
var items = data.stories;
this.maxLimit = data.paging.count;
for (var i = 0; i < items.length; i++) {
if (this.items.length < this.maxLimit) {
this.items.push(items[i]);
}
}
activateGear();
是activateGear
将事件处理程序附加到重复元素上的函数。
如何在 angularjs 1.0.8 中实现上述目标?
更新:
我设法实现了使用setInterval
作为解决方法的效果。
希望没有这样的解决方法我能得到我想要的。
MyWorks.prototype.nextPage = function() {
if (this.busy) return;
this.busy = true;
var url = "/my_works?page=" + this.page + "&top=" + this.perPage + "&callback=JSON_CALLBACK";
$http.defaults.headers.get = { 'Accept' : 'application/json', 'Content-Type' : 'application/json' };
$http.get(url).success(function(data, status, headers, config) {
var items = data.stories;
this.maxLimit = data.paging.count;
for (var i = 0; i < items.length; i++) {
if (this.items.length < this.maxLimit) {
this.items.push(items[i]);
}
}
this.page = parseInt(this.items.length / this.perPage) + 1;
var currentMyWorks = this;
var theIntervalId = setInterval(function() {
if (currentMyWorks.busy == false) {
activateGear();
clearInterval(theIntervalId);
}
}, 300);
this.busy = false;