有没有办法检测重复项目何时完成加载角度1.0.8稳定?

时间:2013-10-31 10:03:55

标签: javascript angularjs angularjs-ng-repeat

在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;

1 个答案:

答案 0 :(得分:0)

最好的方法是让您分开关注点。

将视图转换为指令,您可以利用link函数对已完成渲染的元素进行操作。

$http是您在服务中使用的提供程序,因此不能用于DOM操作,如果您尝试在控制器中使用它,那就更糟糕了。

对于角度指令,文档阅读here和一个很好的学习资源:egghead.io