Javascript 在余烬中拆分和分组项目集合
我试图在余烬中收集一组记录,并将它们分成若干组,比如2组 比如说Javascript 在余烬中拆分和分组项目集合,javascript,ember.js,ember-cli,Javascript,Ember.js,Ember Cli,我试图在余烬中收集一组记录,并将它们分成若干组,比如2组 比如说 {{#each node in model}} <span>node.name</span> {{/each}} {{{#模型中的每个节点} node.name {{/每个}} 我得到了另一件事还有另一件事 我希望能够将节点传递给某个对象,并用div包装每2个节点 类似于thingother thingsome thingone more thingone things 在Ember 2.0中,大多
{{#each node in model}}
<span>node.name</span>
{{/each}}
{{{#模型中的每个节点}
node.name
{{/每个}}
我得到了另一件事还有另一件事
我希望能够将节点传递给某个对象,并用div包装每2个节点
类似于thingother thingsome thingone more thingone things
在Ember 2.0中,大多数东西都应该是一个组件,在那里是处理此逻辑的最佳位置。它应该是一个组件还是控制器?考虑到与显示或其准备工作相关的内容属于该组件的原则,我更喜欢该组件。你可以这样做:
partitions: computedPartition('model', 2)
然后在模板中
{{#each partition in partitions}}
<div>
{{#each node in partition}}
{{node.name}}
{{/each}}
</div>
{{/each}}
分区有不同的算法。看见下面是一个简短的递归示例:
function partition(array, n) {
array = array.slice();
return function _partition() {
return array.length ? [array.splice(0, n)].concat(_partition()) : [];
}();
}
深入
我们可以通过引入一个名为computedArrayInvoke
的更高级别的计算属性来简化(?)上述内容,该属性使用指定的键以及其他参数调用数组值属性上的指定函数:
function computedArrayInvoke(fn, dependentKey, ...args) {
return Ember.computed(dependentKey + ".@each", function() {
return fn(this.get(dependentKey), ...args);
});
}
现在我们可以写作了
partitions: computedArrayInvoke(partition, 'model', 2)
考虑到与显示或其准备工作相关的内容属于组件的原则,我更喜欢组件。你可以这样做:
partitions: computedPartition('model', 2)
然后在模板中
{{#each partition in partitions}}
<div>
{{#each node in partition}}
{{node.name}}
{{/each}}
</div>
{{/each}}
分区有不同的算法。看见下面是一个简短的递归示例:
function partition(array, n) {
array = array.slice();
return function _partition() {
return array.length ? [array.splice(0, n)].concat(_partition()) : [];
}();
}
深入
我们可以通过引入一个名为computedArrayInvoke
的更高级别的计算属性来简化(?)上述内容,该属性使用指定的键以及其他参数调用数组值属性上的指定函数:
function computedArrayInvoke(fn, dependentKey, ...args) {
return Ember.computed(dependentKey + ".@each", function() {
return fn(this.get(dependentKey), ...args);
});
}
现在我们可以写作了
partitions: computedArrayInvoke(partition, 'model', 2)