每次 ng-repeat完成呈现视图时,我需要调用函数。我第一次看到ng-repeat的简单解决方案是使用ng-init="$last ? function() : angular.noop
,其中'function'是要调用的函数。
同样,人们可以编写一个自定义指令,例如在ng-repeat finish event但是,到目前为止,我没有成功找到一个解决方案,当我有一个动态ng-repeat
e.g。当在中间添加或删除项目或在过滤时,$ last将在这些情况下为false。总是可以在列表的末尾添加和删除虚拟条目,但这似乎不是一个合适的解决方案。
欢迎任何建议。感谢。
答案 0 :(得分:0)
遵循JMK的建议(感谢你),我做了以下似乎有效,但看起来有点天真 - 所以欢迎任何改进建议。该指令在渲染的开始和结束时调用两个不同的函数。
HTML 的
<div ng-repeat="item in itemsArray" on-finish-render="{items: itemsArray}">
{{item}}
</div>
JS
.directive("onFinishRender", ["$parse", "$timeout", function ($parse, $timeout) {
return {
restrict: "A",
link: function (scope, element, attr) {
var model = $parse(attr.onFinishRender);
scope.$watch(model, function (newValue, oldValue) {
if (scope.$index === 0) {
//At the start do stuff
}
if (scope.$index === newValue.items.length - 1) {
//At the end do some other stuff
}
}, true);
}
};
}]);