如何在knockoutjs可观察数组上使用underscorejs _.where?

时间:2013-08-30 17:54:03

标签: knockout.js underscore.js

我需要通过Id在报告可观察数组中找到报告。我怎么写underscore声明?

我正在使用:

_.where(reports(), {id:data.ReportId})

_.where(reports(), {id:ko.observable(data.ReportId)})

它总是返回一个空数组。

然后我发现了一些underscoreKO.js,但它仍然不起作用。有人能帮我吗?感谢。


还有另一个类似的帖子here,但它们并不完全相同。 ko.utils.arrayFirst可以找到该项目,但不会帮助我更新它。


正确的答案来自丹尼尔·A·怀特,稍作改动。谢谢。

一次更正:

var record = _.filter(reports(), function (item) { return item.id() == data.ReportId; })
if (record.length > 0) {
    _.first(record).reportStatus("Approved");
}

我发现它必须是item.id(),而不仅仅是id()。但感谢丹尼尔一百万!

2 个答案:

答案 0 :(得分:6)

我认为这不会起作用,因为报告中的id是可观察的。

您应该使用filter

_.filter(reports(), function(item) {return id() == data.ReportId; })

答案 1 :(得分:0)

如果您的报告中的id是可观察的,则可能需要使用filter

var filteredReports = _.filter(reports(), function (report) {
    return report.id() === data.ReportId;
});