【发布时间】:2014-11-18 17:02:22
【问题描述】:
我有一个包含对象数组的模型。对象具有用户可以更新的属性。
在 UI 的另一部分,我想展示一些关于数组的统计信息;项目总数和具有属性集的项目数。
一个使用单数组而不是对象的示例。单击列表项以切换“a”属性:http://jsfiddle.net/rskqbquL/4/
<polymer-element name="test-cool">
<template>
<ol>
<template repeat="{{item, i in list}}">
<li on-tap="{{onTap}}" x-index="{{i}}">{{item[0]}}</li>
</template>
</ol>
<p>Total: {{list.length}}</p>
<p>A:s: {{list | countA}}</p>
</template>
<script>
Polymer("test-cool", {
list: [["a"], ["ab"], ["ac"], ["d"], ["e"]],
countA: function(list) {
var ret = 0;
list.forEach(function(item) {
if (item[0].indexOf("a") >= 0) ++ret;
});
return ret;
},
onTap: function(e, _, el) {
var item = el.innerText;
var index = parseInt(el.getAttribute("x-index"));
if (item.indexOf("a") >= 0) {
this.list[index][0] = item.slice(1);
} else {
this.list[index][0] = "a" + item;
}
// Workaround
this.list = this.list.slice();
}
});
</script>
</polymer-element>
<test-cool></test-cool>
我找不到任何方法来观察数组的所有项的特定属性,因此在 onTap() 中对列表进行虚拟分配。
什么是惯用的 Polymer 收集有关数组子集的统计信息的方法?
【问题讨论】: