2013-03-26 4 views
0

Я новичок в durundaljsDurandaljs: как фильтровать ko.observablearray

я хотел бы знать, как я могу фильтровать ko.observablearray

определяют ([ «услуги/регистратор», «данные/data ',' functions/func '], function (logger, data, func) { var vm = { список: ko.observableArray ([]) }; return vm; });

я хочу, чтобы фильтровать элемент в списке и отобразить его в таблице

благодаря

ответ

8

Нокаут имеет вспомогательные функции, которые не описывались, но они существуют ж/в библиотеке, чтобы помочь с фильтрацией массивы.

Вот полный список всех вспомогательных методов для обработки массивов:

ko.utils.arrayFilter 
ko.utils.arrayFirst 
ko.utils.arrayForEach 
ko.utils.arrayIndexOf 
ko.utils.arrayMap 
ko.utils.arrayPushAll 
ko.utils.arrayRemoveItem 
ko.utils.compareArrays 
ko.utils.unwrapObservable 

и Райан Нимейер написал хороший blog post о том, как использовать некоторые из них.


Метод 1

Вот краткий пример, чтобы получить ваши начал:

var newList = ko.utils.arrayFilter(list(), function(item) { 
    return item.price > 10; 
}); 

Это создает newList предметов, которые имеют цену более 10. Затем вы можете изменить текущий а именно:

list(newList); 

Способ 2

Другой вариант - найти предметы, которые вы хотите удалить. Допустим, вы хотите, чтобы удалить все элементы с ценой более 10:

var rList = ko.utils.arrayFilter(list(), function(item) { 
    return item.price > 10; 
}); 

Далее вы можете позвонить:

list.removeAll(rList); 

Метод 3

И, как они говорят, что есть более чем один путь к метафорическому коже кошки:

list.remove(function(item) { return item.price > 10 }); 

У вас есть это.

и я уверен, что есть еще много способов сделать это. Если вам нужны более продвинутые способы фильтрации массивов, я бы рекомендовал посмотреть на underscore.js

Смежные вопросы