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

Bla*_*ise 0 underscore.js knockout.js

我需要通过Id在报告可观察数组中找到报告.我怎么写这个underscore陈述?

我在用:

_.where(reports(), {id:data.ReportId})
Run Code Online (Sandbox Code Playgroud)

_.where(reports(), {id:ko.observable(data.ReportId)})
Run Code Online (Sandbox Code Playgroud)

它总是返回一个空数组.

然后我发现了一些underscoreKO.js,但它仍然无法奏效.有人能帮我吗?谢谢.


还有另外一个类似的帖子在这里,但他们不完全一样.ko.utils.arrayFirst可以找到该项目,但不会帮助我更新它.


正确答案来自Daniel A. White,稍有改动.谢谢.

一个修正:

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

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

Dan*_*ite 6

我认为这不会起作用,因为id在你的报告中是可以观察到的.

你应该用filter.

_.filter(reports(), function(item) {return id() == data.ReportId; })
Run Code Online (Sandbox Code Playgroud)