角飞镖 - 执行NG-重复完成后右功能(Angular Dart - execute a funct

2019-09-28 19:18发布

搜索计算器这个问题总是给我Angular.js解决方案。

你会怎么做这Anuglar镖?

这是我想有一个函数运行后角镖的NG-重复指令已完成渲染的元素。

编辑:

事实证明,知道何时NG-重复完成枚举不意味着相应的DOM元素已经被附加到文档。

我想我的预期的问题是如何确定何时吴重复列举的所有元素连接到DOM树,可以通过选择查询

EDIT2

<div ng-repeat='fruit in fruits'>
 <li class="fruit">{{fruit}}</li>
</div>
querySelectorAll('.fruit'); // should return all <li> element created by ng-repeat
                            // the trick is knowing when and where to call querySelectorAll

谢谢

Answer 1:

我试过{{foo($last)}}它并没有为我工作的。

这个例子使用MutationObserver于收到通知添加的元素。 我想它和它的工作。

<!DOCTYPE html>
<html>
  <head>
    <script src="packages/shadow_dom/shadow_dom.debug.js"></script>
  </head>
  <body ng-cloak>
    <ul somefruits>
     <li ng-repeat='fruit in ctrl.fruits track by $index'
     class="fruit" ng-class="{'ng-last': $last}">{{fruit}}</li>
    </ul>

    <script type="application/dart" src="index.dart"></script>
    <script type="text/javascript" src="packages/browser/dart.js"></script>

  </body>
</html>
library angular_default_header.main;

import 'dart:html';
import 'package:angular/angular.dart';

@NgController(selector: '[somefruits]', publishAs: 'ctrl')
class Fruits {
  Fruits(){
    print('fruits created');
  }

  List fruits = ['Apple', 'Banana', 'Orange', 'Kiwi'];
}


class MyAppModule extends Module {
  MyAppModule() {
    type(Fruits);
  }
}

void mutationCallback(List<MutationRecord> mutations, MutationObserver observer) {
  mutations.forEach((mr) {
    mr.addedNodes.forEach((Node n) {
      if(n is Element) {
        if(n.classes.contains('ng-last')) {
          print('last added');
          observer.disconnect();
          n.style.border = '1px solid red';
        }
      }
    });
  });
}

main() {
  print('main');
  var ul = document.querySelector('ul');
  new MutationObserver(mutationCallback).observe(ul, childList: true);
  ngBootstrap(module: new MyAppModule());
}


Answer 2:

见angular.NgRepeatDirective

`$last` [bool]   true if the repeated element is last in the iterator.

然而,除非您的列表是相当大的,不应该大部分元素来在大致相同的时间绘制? 也许你可以观看更改集合。



Answer 3:

看看这个问题的GitHub( https://github.com/angular/angular.dart/issues/843了解更多信息)。

它闻起来像我的错误,但我不知道。

作为一种解决办法,你可以的角度以外安排未来。 有一个关于这个在上面提到的问题的详细信息。



文章来源: Angular Dart - execute a function right after ng-repeat has finished