0

私はこの構造を持っています:

MyApp.User = function()
{
    var self = this;
    self.ID = ko.obervable();
    self.Name = ko.obervable();
    self.LastName = ko.observable();
}

MyApp.UserHub = function()
{
    self.users = ko.observableArray();

     $.getJSON("url", function (data) {
         var mappedUser = $.map(data.UsersFromJson, function (item) {
             return new MyApp.User(item);
         });
         self.users(mappedUsers);
     });
}

HTML Request と JSON を使用して入力した observableArray があります (これは問題なく動作します)。LastName問題は、その observableArray でユーザーを検索できるようにして、または に含めることができる情報を提供したいということですFirstName。このようなもの:

self.searchedUsers = ko.observableArray();
for(var item in users)
{
    if(item.FirstName.Contains(query) || item.LastName.Contains(query))
    {
         self.searchedUser.push(item);
    }
}

クエリは、検索したい入力テキスト値です。誰でもそれを繰り返すのを助けることができますObservableArrayか?

4

2 に答える 2

4

一般に、計算されたオブザーバブルを作成して、配列のフィルター処理されたバージョンを表すことをお勧めします。

したがって、次のようなものになります。

self.users = ko.observableArray();
self.query = ko.observable();
self.filteredUsers = ko.computed(function() {
    var query = self.query();    

    return ko.utils.arrayFilter(self.users(), function(user) {
        return user.FirstName.indexOf(query) > -1 || user.LastName.indexOf(query) > -1;
    });
});
于 2012-08-03T02:18:54.890 に答える
1

また、ユーザーの代わりに self.users() を反復処理する必要があると思います。

users は observableArray 関数であり、 users() は基になるデータへのアクセスを提供します。

于 2012-08-10T14:04:50.100 に答える