小编Fin*_*ogi的帖子

在嵌套的observableArray中按一个关键字过滤用户

我试图 根据我的viewModel上的关键字observableArray 过滤我的usersobservableArray,它有一个嵌套关键字observableArray
.

当我尝试使用时,ko.utils.arrayForEach我得到一个堆栈溢出异常.请参阅下面的代码,也发布在这个jsfiddle中

function User(id, name, keywords){
    return {
        id: ko.observable(id),
        name: ko.observable(name),
        keywords: ko.observableArray(keywords),
        isVisible: ko.dependentObservable(function(){

        var visible = false;            
        if (viewModel.selectedKeyword() || viewModel.keywordIsDirty()) {
            ko.utils.arrayForEach(keywords, function(keyword) {
                if (keyword === viewModel.selectedKeyword()){
                    visible = true;
                }
            });
            if (!visible) {
                viewModel.users.remove(this);
            }
        }
        return visible;
      })
    }
};

function Keyword(count, word){
    return{
        count: ko.observable(count),
        word: ko.observable(word)
    }
};

var viewModel = {
    users: ko.observableArray([]),
    keywords: ko.observableArray([]),
    selectedKeyword: ko.observable(),
    keywordIsDirty: ko.observable(false)
}

viewModel.selectedKeyword.subscribe(function …
Run Code Online (Sandbox Code Playgroud)

javascript stack-overflow observablecollection knockout.js

3
推荐指数
1
解决办法
2414
查看次数