我怎样才能打破或继续击倒阵型呢?

时间:2012-07-25 11:43:03

标签: knockout.js

这是示例代码。我想打破(或继续)淘汰赛的ko.util.arrayForEach。

ko.utils.arrayForEach(items, function (item) {
    if (...) break;
    if (...) continue;
}

3 个答案:

答案 0 :(得分:15)

看起来你不能。这是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计算的observable类似,我们可以创建一个从搜索字段返回第一个匹配项:

//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

找到

答案 1 :(得分:9)

似乎ko.utils.arrayFirstko.utils.arrayFilter似乎比您当前的方法更符合您的需求。

答案 2 :(得分:1)

只需使用 ko.utils.arrayFirst 执行array上的功能,并且{strong>返回/中断 {{1>评估为true。

以下是我最近使用过的示例

function

更多细节可以在http://www.knockmeout.net/2011/04/utility-functions-in-knockoutjs.html

找到