javascript - 如何在我的自定义指令中获取 ng-repeat 子元素的句柄?

标签 javascript html angularjs angularjs-directive

我正在尝试构建一个自定义指令,将其内容重新排列为网格。 我想嵌入 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();

            // ...
    }; 
}]);

我错过了什么?

最佳答案

要实现重新排序,您有多种选择:

  1. 操纵 DOM。恕我直言,这是最不受欢迎的方式,它不是很棱 Angular 分明。
  2. 重新排序链接函数中 ngRepeat 中使用的数组 ([1, 2, 3])。
  3. 使用 orderBy 过滤器 ( doc )

我创建了一个 plunk 来演示 2 和 3,希望它能有所帮助。 http://plnkr.co/edit/vrgeBoJZiG6WMu4Rk46u?p=preview

关于javascript - 如何在我的自定义指令中获取 ng-repeat 子元素的句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17882839/

相关文章:

html - 响应式背景 CSS 登陆

angularjs - 如何创建要在任何模块中使用的指令?

javascript - 在 ASP.NET 中关闭 session 的 OnClick 事件

html - 将较小的内联 block div 紧紧地围绕在向左浮动的较大的 div 周围

javascript - 报错: webpack. optimize.CommonsChunkPlugin已被移除,请改用config.optimization.splitChunks

html - 将 Paypal 下拉列表更改为可点击的图像

使用 JWT 的 Angularjs 在登录时将 CORS 中断到 Amazon S3

javascript - Angular Ui-Router 存在双页眉和页脚问题

javascript - Protractor 基本问题 - 学习曲线低

javascript - 如何在 Javascript 中根据 True 或 False 更改复选框状态?