从敲除绑定中的集合中获取不同的值

时间:2013-10-16 19:52:54

标签: asp.net-mvc knockout.js breeze hottowel

 <tbody data-bind="foreach: hearings">
        <tr>
            <td data-bind="text: ID"></td>
            <td data-bind="foreach:Appeals">
                <span data-bind="text:CaseId">
                </span>,
           </td>

       </tr>
    </tbody>

在上面的HTML中,听证会是一个observableArray,它包含从听证实体获取记录的微风查询的结果。听觉实体有一个集合属性

public ICollection<Appeal> Appeals { get; set; }

这就是为什么我使用了另一个foreach:在我的html中上诉以从该实体获取CaseId。但是上诉集合可以有相同CaseId的多个条目。

如何从Appeals集合中仅显示CaseId的不同值?

1 个答案:

答案 0 :(得分:2)

假设AppealsCaseId是可观察的,您将创建一个计算的observable来提取CaseId值并返回一组不同的值:

this.distinctCaseIds = ko.computed(function() {
    var caseIds = ko.utils.arrayMap(this.Appeals(), function(appeal) {
        return appeal.CaseId();
    });
    return ko.utils.arrayGetDistinctValues(caseIds);    
}, this);

然后您可以非常简单地绑定到此列表:

<td data-bind="text: distinctCaseIds().join()"></td>