我正在尝试构建一个自定义指令,将其内容重新排列为网格。
我想嵌入 ng-repeat
指令的结果,然后对结果元素重新排序。
问题是当我在链接函数中调用 element.children()
方法时,我有一个空数组,因为 ng-repeat
指令尚未呈现并被解释为评论。
否则,如果指令的内容是“静态的”,它会很好地工作。
HTML
<grid n='6'>
<div ng-repeat="i in [1,2,3]"></div>
</grid>
我的指令只有有趣的代码片段:
app.directive('grid', [function () {
return {
restrict: 'E',
replace: true,
transclude: true,
template: "<div ng-transclude></div>",
link: function (scope, grid, attrs) {
// With an ngRepeat transcluded, els result in an empty array
var els = grid.children();
// ...
};
}]);
我错过了什么?
最佳答案
要实现重新排序,您有多种选择:
- 操纵 DOM。恕我直言,这是最不受欢迎的方式,它不是很棱 Angular 分明。
- 重新排序链接函数中
ngRepeat
中使用的数组 ([1, 2, 3])。 - 使用
orderBy
过滤器 ( doc )
我创建了一个 plunk 来演示 2 和 3,希望它能有所帮助。 http://plnkr.co/edit/vrgeBoJZiG6WMu4Rk46u?p=preview
关于javascript - 如何在我的自定义指令中获取 ng-repeat 子元素的句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17882839/