0

これで、私が取り組んできたこのゲスト リスト フロントエンド アプリケーションはほぼ完成です。最後に、文字列を渡してリストを名前でフィルタリングできるようにします。したがって、ユーザーがフィールドに名前を入力するのを購読することで、この ko 計算関数を使用して、この別の方法で配列を検索できるはずです。self.guests はゲスト オブジェクトの配列であることに注意してください。

self.displayResults = ko.computed(function(){
    if(self.displayTypeOf() == 'slice'){
        var ary = self.guests.slice(self.startValue(),self.endValue());
        console.log(ary)
        return ary
    }else if(self.displayTypeOf() == 'string'){
        //Code I need goes here
    }
});

通常、リストはリストのスライスされたセクションで計算されることがわかります。ユーザーが入力に何かを入力し始めると、求めている検索配列関数を使用して、この計算されたリストをオーバーライドおよび更新します。

前もって感謝します!

4

2 に答える 2

1

ko.utils.arrayFilterフィルタリング用のユーティリティ関数をお勧めします:

self.displayResults = ko.computed(function(){
    if(self.displayTypeOf() == 'slice'){
        var ary = self.guests.slice(self.startValue(),self.endValue());
        console.log(ary)
        return ary
    }else if(self.displayTypeOf() == 'string'){
        // Init filter
        var filter = self.SomeValue();
        var ary = ko.utils.arrayFilter(self.guests(), function(item) {
           return ko.utils.stringStartsWith(item.name().toLowerCase(), filter);
        });
        console.log(ary);
        return ary;
    }
});

ko utils メソッドの詳細については、http ://www.knockmeout.net/2011/04/utility-functions-in-knockoutjs.html を参照してください。

于 2012-10-23T14:24:32.770 に答える
0

Array::filterを使用できます。

var guestlist = [ 'Foo Bar', 'Doo Bar', 'Foo Doo', ... ];

function guestFilter(element) {
    return element.indexOf('Bar') > 0;
}

guestlist.filter(guestFilter); // [ 'Foo Bar', 'Doo Bar' ]
于 2012-10-23T14:05:31.127 に答える