web-dev-qa-db-ja.com

observableArrayから具体的な要素を取得する

これは簡単に思えますが、2時間後に頭が痛くなります。

(selectからの)categoryIndexがあり、そのIDを持つobservableArrayからカテゴリを取得したいと思います。

どうすればいいですか? indexOfを試してみました(ただし、どのように機能するかわからないので、もちろんドキュメントを確認しました)、linq.jsを試してみましたが、どこが使いにくいか、または愚かです(カテゴリからIDを取得する方法がわかりません)そしてそれを比較します)。

私のobservableArrayはこれです:

categories[category { Id=2,  Name="Pink", ...}, category { Id=1,  Name="Green",  ...}]

したがって、インデックスが2の場合、「ピンク」カテゴリを取得する方法が1つ必要です。

ありがとうございました。

編集:

viewModel.addNote = function() {
    var selectedCategoryIndex = $("#Categories").val();
    var selectedCategory = ko.utils.arrayFirst(this.categories(), function(item) {
        return item.Id === selectedCategoryIndex;
    });

}.bind(viewModel);
20
Jesus Rodriguez

私は通常、KOユーティリティ関数を使用しますko.utils.arrayFirstこの種のことをする。配列をループして、渡された述語に一致する最初の項目を返します。

あなたはそれをこのように使うでしょう:

selectedId = 2;

var category = ko.utils.arrayFirst(categories(), function(category) {
   return category.Id === selectedId;
});
46
RP Niemeyer