これはサンプルコードです。ノックアウトのko.util.arrayForEachを壊す(または続行する)。
ko.utils.arrayForEach(items, function (item) {
if (...) break;
if (...) continue;
}
これはサンプルコードです。ノックアウトのko.util.arrayForEachを壊す(または続行する)。
ko.utils.arrayForEach(items, function (item) {
if (...) break;
if (...) continue;
}
できないようです。arrayForEachのソースは次のとおりです(KO GitHubページのutils.jsから)
arrayForEach: function (array, action) {
for (var i = 0, j = array.length; i < j; i++)
action(array[i]);
},
ただし、 Knockoutはko.utils.arrayFirst
、配列内の各アイテムに対して関数を実行し、関数がtrueと評価された最初のアイテムを返すことを提供します。監視可能に計算されたfilteredItemsと同様に、検索フィールドから最初の一致を返すものを作成できます。
//identify the first matching item by name
viewModel.firstMatch = ko.computed(function() {
var search = this.search().toLowerCase();
if (!search) {
return null;
} else {
return ko.utils.arrayFirst(this.filteredItems(), function(item) {
return ko.utils.stringStartsWith(item.name().toLowerCase(), search);
});
}
}, viewModel);
詳細については、http://www.knockmeout.net/2011/04/utility-functions-in-knockoutjs.htmlをご覧ください。
現在のアプローチよりもニーズに合っているようko.utils.arrayFirst
です。ko.utils.arrayFilter
を使用するだけで、とでko.utils.arrayFirst
関数が実行され、がtrueと評価されるとすぐに戻り/中断します。array
function
これが私が最近使った実例です
this.updateElement = function (model) {
ko.utils.arrayFirst(that.list(), function (m) {
if (model.formId() === m.formId()) {
m.description(model.description());
m.status(model.status());
m.type(model.type());
}
});
}
詳細については、http://www.knockmeout.net/2011/04/utility-functions-in-knockoutjs.htmlをご覧ください。