Knockout checkbox - помещать только проверенные значения в массив

У меня есть этот флажок, который динамически заполняет

<!-- ko foreach: AllPens -->
<label>
    <input type="checkbox" data-bind="checked: IsChecked" />
    <span data-bind="text: name"></span>
</label>
<!-- /ko -->

Предполагая, что наблюдаемый массив GET (AllPens)

{ code: "001" , name: "Parker"},
{ code: "002" , name: "Sheaffer"},
{ code: "003" , name: "Mont Blanc"}

Я должен отправить обратно массив проверенных элементов -

"Pens": [{
    "PenType": "001",
    "Order": false
}, {
    "PenType": "002",
    "Order": true
}]

У меня есть грубая идея сохранить проверенный код пера, а если проверено в объекте, - новое перо ('001', true)

function Pen(type, checked) {
    var self = this;

    self.PenType = ko.observable(type);
    self.IsChecked = ko.observable(false);
}

Как связать значение флажка с Knockout observableArray на объекте?

Я полагаю, что приведенное ниже должно работать, если я пойму выше.

self.Pens= ko.computed(function()
{
    var selectedPens = [];
    ko.utils.arrayForEach(self.Pen(), function (pen) {
        if(pen.IsChecked())
            selectedPens.push(pen);
    });
    return selectedPens;
});

Я все еще учусь нокаутом. Любая помощь приветствуется:)

4 голоса | спросил lily 26 PMpThu, 26 Apr 2018 14:05:48 +030005Thursday 2018, 14:05:48

2 ответа


0
Мне удалось заставить это работать.Вместо того, чтобы динамически заполнять пары ключ-значение непосредственно в Self.AllPens (), я создал функцию для загрузки списка ручек в объектИ перебрал, чтобы проверить IsChecked ниже -
ответил lily 30 PMpMon, 30 Apr 2018 13:18:30 +030018Monday 2018, 13:18:30
0
Ваш код должен быть таким
ответил Narendra Jadhav 26 PMpThu, 26 Apr 2018 14:08:42 +030008Thursday 2018, 14:08:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132