掌握angularjs的directive在DOM衬着完成后实行

题目

建立一个名叫format的directive,在link函数中对数据举行格式化。数据是经由过程data-binding从scope传过来的。
然则link函数实行时,绑定的数据还没有见效,依然是模板情势,如{{f.name}}这类。假如须要在数据绑定后再实行directive,该怎么办?

解决方案

link函数实行时,数据绑定的相干事宜已存放在行列中了,因而把format操纵放到timeout函数中即可。如许format操纵就一定位于数据绑定事宜以后。

中心代码

详细代码见 codepen

directive的link函数以下:

directive("format", ["$timeout", function(timer) {
    return {
      link: function($scope, elem, attr) {
        timer(function() {
          var val = elem.text();
          console.log(val);
          var val = parseFloat(val);
          if (val !== val) {
            return
          }
          elem.text(val.toFixed(3));
        }, 0);
      },
      restrict: "A",
    }
  }]);

能够尝试去掉timer看看结果,此时console中打出的日记条数和scope中的数组长度是一样的,申明dom构造已衬着好了,然则数据没有绑定好,因而format没有见效。
加上timer后,format才见效。

    原文作者:flybywind
    原文地址: https://segmentfault.com/a/1190000004267696
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞