【问题标题】:Ember: How to render an element every n elements in a list?Ember:如何在列表中每 n 个元素呈现一个元素?
【发布时间】:2014-10-29 00:33:16
【问题描述】:

在搜索和阅读文档后,我找不到直接解决此问题的方法:

从 ArrayController 渲染项目列表,我想每 N 个元素插入一个位置或页面指示符。

我将不胜感激有关 Ember 方式的任何想法!

通常我会假设,这可以在模板中处理,例如...

each listitems
    if index % 5 == 0
        insert indicator

...但是 Ember 不公开索引,并且 Handlebars 模板应该是无逻辑的。

我能想到的第二种方法是使用 ArrayController 并为数组中的每个第 n 个对象设置一个属性,但是为什么对象需要知道这一点呢?设置属性感觉很混乱,而且很可能出错。

任何想法都将受到高度赞赏!

【问题讨论】:

    标签: javascript list ember.js pagination each


    【解决方案1】:

    您可以构建自己的助手。顺便说一句,您可以在每个索引中使用 _view.contentIndex 访问索引。因此,您可以编写一个自定义助手,它基本上插入所需的 html。

    Ember.Handlebars.registerBoundHelper('indicator', function(index,options){
           var html = '';
           if(index%2) {
              html = '<hr />';
           }
           return new Ember.Handlebars.SafeString(html);
    });
    

    并通过传递索引来调用它。这是工作的jsbin http://emberjs.jsbin.com/niguwa/1/edit

    【讨论】:

    • 不错的解决方案,但有一个警告:_view.contentIndex 是私有属性,可能会在未来的 Ember.js 版本中消失,恕不另行通知。所以我仍在寻找 Ember 的方式来做到这一点。 ;-)
    猜你喜欢
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 2020-11-05
    • 2022-01-25
    • 2013-05-24
    • 2018-03-11
    • 2020-03-12
    • 2015-09-11
    相关资源
    最近更新 更多