题目
建立一个名叫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才见效。