我有这个结构:
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);
});
}
我有一个observableArray,我使用HTML Request和JSON填充了它(效果很好)。问题是,我希望能够在该observableArray中搜索用户,并提供可以包含在
LastName
或FirstName
中的信息。像这样:self.searchedUsers = ko.observableArray();
for(var item in users)
{
if(item.FirstName.Contains(query) || item.LastName.Contains(query))
{
self.searchedUser.push(item);
}
}
查询是我要搜索的输入文本值。任何人都可以帮助迭代该
ObservableArray
吗? 最佳答案
通常,您需要创建一个计算的可观察值来表示数组的过滤版本。
因此,您将获得以下内容:
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;
});
});
关于javascript - 如何迭代ko.ObervableArray,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11786807/