http://codepen.io/whb/pen/wzjWYv
初始化的时候,可以走到link函数中将原数据处理之后再做显示
当点击刷新之后
实在无法理解 当ng-repeat中数据刷新之后 嵌套的directive未执行link函数,跪求各位大神指导
代码如下:
(function() {
'use strict';
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.list = [{
name: "张三",
age: 23
}, {
name: "李四",
age: 63
}];
//刷新按钮
$scope.load = function() {
$scope.list = [{
name: "张三1",
age: 23
}, {
name: "李四1",
age: 63
}];
};
});
app.directive('item', function() {
return {
restrict: 'A',
template: "<p>姓名:</p> <p>{{ item.name }}</p> <p>昵称:</p> <p>{{ item.nickName }}</p> <p>年龄:</p> <p>{{item.age}}</p>",
scope: {
item: "=",
},
link: function(scope, element, attrs) {
scope.item.nickName = scope.item.name + "nick";
console.log(scope.item);
}
}
});
})();
<p ng-app="plunker">
<p ng-controller="MainCtrl" style="text-align: center;">
<p >
<p ng-repeat="item in list track by $index" class="items-warp">
<p item="item" class="row"></p>
</p>
</p>
<button ng-click="load()">刷新 </button>
</p>
</p>
Saya akan beritahu pendapat saya, tetapi mungkin tidak betul.
Sebabnya harus disebabkan oleh trek anda oleh sintaks pada ng-repeat.
Dokumen rasmi mengatakan bahawa ngRepeat mengesan sama ada viewModel yang sepadan telah berubah berdasarkan $watchCollection Menambahkan runut oleh adalah bersamaan dengan melampirkan syarat baharu pada mekanisme pengesanan ini Apabila anda mengklik muat semula untuk kali kedua, ngRepeat mengesan sama ada viewModel yang sepadan telah berubah berdasarkan on track by. Pertimbangan yang diperoleh daripada syarat sebenarnya tidak memerlukan pemaparan semula Dom, jadi arahan yang anda tentukan tidak akan disusun lagi Kaedah pautan hanya dipanggil selepas penyusunan, jadi kaedah pautan tidak boleh dipanggil.
Analisis penyusunan dan pautan: portal