List Foreach非重复值淘汰列表
我正在尝试使用viewModel.Names中的LastNames填充无序列表。它可以很好地填充,但我只需要不同的值,而这当前提供了多个相同的姓氏?如何获得不同的值 更新:有一个名字MiddleName LastName 视图模型:List Foreach非重复值淘汰列表,list,knockout.js,foreach,List,Knockout.js,Foreach,我正在尝试使用viewModel.Names中的LastNames填充无序列表。它可以很好地填充,但我只需要不同的值,而这当前提供了多个相同的姓氏?如何获得不同的值 更新:有一个名字MiddleName LastName 视图模型: <ul data-bind="foreach: viewModel.Names"> <li><a data-bind="text: LastName"></a></li> </ul>
<ul data-bind="foreach: viewModel.Names">
<li><a data-bind="text: LastName"></a></li>
</ul>
<uldata-bind="foreach: LastNames">
<li><input type="checkbox"/><a data-bind="text: []"></a></li>
</ul>
以下是我的新视图模型:
<ul data-bind="foreach: viewModel.Names">
<li><a data-bind="text: LastName"></a></li>
</ul>
<uldata-bind="foreach: LastNames">
<li><input type="checkbox"/><a data-bind="text: []"></a></li>
</ul>
如果我理解正确,您需要创建一个计算数组,如下所示:
// this beeing your model
this.distinctNames = ko.computed(function(){
var distinct = [];
for (var i = 0; i < this.Names.length;i++) {
if (distinct.indexOf(this.Names[i]) == -1)
distinct.push({LastName:this.Names[i]});
}
return distinct;
}, this);
看
编辑
您以错误的方式访问每个人的数据。您应该使用引用当前foreach值的$data
:
<ul data-bind="foreach: LastNames">
<li><input type="checkbox"/><a data-bind="text: $data"></a></li>
</ul>