我有以下简单指令:
angular.module('MyApp').directive('readonlyList', function () {
return {
restrict: 'E',
replace: true,
templateUrl: 'list.html',
scope: {
selectedNumber: '=',
numbers: '='
},
link: function (scope, element, attributes) {
scope.$watch('numbers', function() {
for(var i=0; i < $(element).children().length; i++) {
console.log("list entry text: " + $(element).children().eq(i).text());
}
});
}
};
});
使用以下模板:
<ul class="no-bullet phone-list scrollable">
<li ng-repeat="number in numbers">{{number}}</li>
</ul>
然而,运行代码我得到以下内容:
{{数}}
{{数}}
{{数}}
我尝试在for循环之前编译代码:
$compile(element.contents())(scope);
在我的列表中生成多个重复项。
我正在使用角度1.3 ......
我在这里有点失落,任何帮助都会受到赞赏!
答案 0 :(得分:1)
监视块在与Angular ngRepeat渲染相同的摘要循环中执行,因此Angular尚未处理项目。
可能最简单的方法是在下一个摘要周期中运行$watch
代码。您可以使用$timeout
服务来实现它:
scope.$watch('numbers', function(newVal, oldVal) {
$timeout(function() {
for (var i = 0; i < $(element).children().length; i++) {
console.log("list entry text: " + $(element).children().eq(i).text());
}
});
});