2013-08-30 85 views
0

我需要通過Id在報告observable數組中找到報告。我該怎麼寫underscore聲明?如何在knockoutjs可觀察數組上使用underscorejs _.where?

我使用:

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

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

,它總是返回一個空數組。

然後我找到了一些underscoreKO.js,但它仍然無法正常工作。有人能幫我嗎?謝謝。


還有另外一個類似的帖子here,但它們並不完全一樣。 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"); 
} 

我覺得它必須是item.id(),而不是僅僅id()。但萬分感謝丹尼爾!

回答

6

我不認爲這會起作用,因爲您的報告中的id是可觀察的。您可以使用filter

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

如果在您的報告中id是可觀的,你可能需要只使用filter

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