这看起来很容易,但两个小时后我的头疼了。
我有一个categoryIndex(来自select),我想从具有该Id的observableArray中获取该类别。
我是怎么做到的?我尝试使用indexOf(但我不确定它是如何工作的,当然我看了doc),我尝试了linq.js但是Where很难使用或者我很愚蠢(我不知道如何从类别中获取Id并比较它。)
我的observableArray是这样的:
categories[category { Id=2, Name="Pink", ...}, category { Id=1, Name="Green", ...}]
所以,如果我的索引是2,我只需要一种方法来获得“粉红色”类别。
谢谢。
编辑:
viewModel.addNote = function() {
var selectedCategoryIndex = $("#Categories").val();
var selectedCategory = ko.utils.arrayFirst(this.categories(), function(item) {
return item.Id === selectedCategoryIndex;
});
}.bind(viewModel);
答案 0 :(得分:46)
我通常使用KO实用程序函数ko.utils.arrayFirst
来执行此类操作。它只是遍历一个数组并返回与传递给它的谓词相匹配的第一个项。
您可以这样使用它:
selectedId = 2;
var category = ko.utils.arrayFirst(categories(), function(category) {
return category.Id === selectedId;
});