Knockout.js флажок "выбрать все" - PullRequest
11 голосов
/ 11 мая 2011

Я только начал играть с Knockout.js, и это действительно круто.У меня есть сетка.Эта сетка имеет столбец с флажком вверху, чтобы «выбрать все» элементы, а также отменить выбор.Стандартное поведение сетки.

Вот мой код:

Javascript:

// Define a "banner" class
function banner(inventory, name, artType, artSize) {
    return {
        isSelected : ko.observable(false),
        inventory : ko.observable(inventory),
        name : ko.observable(name),
        artType : ko.observable(artType),
        artSize : ko.observable(artSize)

    };
}

var viewModel = {
    banners : ko.observableArray([new banner("network", "Banner #1"), new banner("oo", "Banner #2")]),
    addBanner : function() {
        this.banners.push(new banner("network", "Banner"));
    },
    selectAll : function() {
        this.banners.isSelected(true)
    }       

};

ko.applyBindings(viewModel);

Я связываю событие "selectAll" сфлажок так:

<th><input data-bind="click: selectAll" type="checkbox" /></th>

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

<td><input data-bind="checked: isSelected" type="checkbox" /></td>

По какой-то причине моя функция selectAll не работает правильно,Я довольно новичок в этой парадигме программирования OO javascript, поэтому я могу сделать что-то явно не так.

Спасибо!

Ответы [ 2 ]

18 голосов
/ 11 мая 2011

баннеров в этом случае является массивом, поэтому вам необходимо получить доступ к каждому элементу в массиве и обновить отдельные свойства isSelected.

Что-то вроде:

ko.utils.arrayForEach(this.banners(), function(banner) {
   banner.isSelected(true);
});
1 голос
/ 27 июня 2013

Есть более функциональный ответ по ссылке ниже. Снимает флажок «выбрать все», если сняты другие флажки:

проверка выбивки / снятие отметки со всех полей со списком

...