javascript - 限制列表表达式中显示的列表项数量

标签 javascript mustache ractivejs

我需要在两个 div 中显示一个列表数组,前半部分在第一个 DIV 中,后半部分在第二个 DIV 中列表。请注意,我不想将列表数组拼接成两部分并在两个列表中显示。

这是我的模板,例如

<!-- First half number of items should be displayed in firstHalf div -->
<div id="firstHalf">
   {{#each names:i}}
      {{firstName}} {{lastName}}
   {{/each}}
</div>
<!-- Second half number of items should be displayed in secondHalf div -->
<div id="secondHalf">
   {{#each names:i}}
      {{firstName}} {{lastName}}
   {{/each}}
</div>

例如,如果我有如下数据

var data = [ {
    firstName : "Joe", lastName: "Armstrong"
}, {
    firstName : "Jose", lastName: "Valim"
}];

它需要像下面这样渲染

<div id="firstHalf">
   Joe Armstrong
</div>
<div id="firstHalf">
   Jose Valim
</div>

请给我进一步的建议。

最佳答案

另一种有效的方法是通过索引引用间接引用列表成员。在 this example我们正在生成一系列索引,然后引用list[this]:

<!-- First half number of items should be displayed in firstHalf div -->
<div id="firstHalf">
   {{#each range(0,names.length/2) }}
      {{names[this].firstName}} {{names[this].lastName}}
   {{/each}}
</div>

<!-- Second half number of items should be displayed in secondHalf div -->
<div id="secondHalf">
   {{#each range(names.length/2,names.length) }}
      {{names[this].firstName}} {{names[this].lastName}}
   {{/each}}
</div>

range() 函数如下所示:

function ( start, end ) {
    var arr = [];
    for ( i = Math.floor(start); i < Math.floor(end); i += 1 ) {
        arr.push( i );
    }
    return arr;
}

尽管pseudosavant有一个非常好的解决方案,但我提到这一点是因为间接引用元素是在执行诸如与表格数据进行双向绑定(bind)之类的操作时一个有用的技巧。

关于javascript - 限制列表表达式中显示的列表项数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24921079/

相关文章:

javascript - Gulp BrowserSync 不刷新

javascript - 跨域或 CDN 加载 Mustache.js/Handlebars.js 模板的最佳实践

javascript - 如何生成仅具有最大值的 Ractive <select>

javascript - 动态设置类型颜色时 Ng-repeat 生成错误

Javascript 淡入文本,一次一个词,适用于一个 div,但不适用于多个 div?

javascript - mustache 模板可以进行模板扩展吗?

javascript - 当我追加到数组时,Ractive.js 会追加还是重建所有内容?

javascript - 三 mustache 上的 Ractive JS 事件

javascript - 检测一个jsp中具有两个元素Id的输入事件

javascript - 如何调试 Mustache js 模板?