knockoutjs и флажок проверяют привязку

0

У меня возникли проблемы с тем, чтобы проверенная привязка knockoutjs работала правильно. Не уверен, что я просто делаю что-то неправильно или что. У меня есть эта часть html

 <ul data-bind="foreach: ListItems" >
                        <li style="padding-left: 0px; margin-left: 0px; color: white; font-size: 12px;">
                            <div class="title" style="margin-right: 3em; line-height: 20px;">
                                <input type="checkbox" data-bind="checked: IsActive" />

                                <label data-bind="text: Quantity, disable: IsActive"</label>
                                <label data-bind="text: Description, disable: IsActive" ></label>

                            </div>
                        </li>
                    </ul>

Где я хочу установить флажок, который позволяет пользователям отмечать элементы из этого списка, нажав на флажок, который должен либо вычеркнуть текст, либо его серый или что-то еще.

Моя модель просмотра создается путем получения следующего формата данных json.

{"$id":"1","Description":"New List","Categories":
[{"$id":"2","Description":"Bread/Bakery","ListItems":    
[{"$id":"3","IsActive":1,"Description":"Bread","Quantity":"1 Loaf"}]},
{"$id":"4","Description":"Beverages","ListItems":
[{"$id":"5","IsActive":1,"Description":"Coke","Quantity":"1 Case"},

Поэтому проблема в том, что проверка флажка здесь фактически не делает. Это должно быть отключением других меток, но это не так. Все мои другие значения отображаются правильно, и если я делаю data-bind = text: IsActive, я могу видеть значение, которое должно меняться с помощью флажка, но оно никогда не изменяется.

Изменение: следующее предложение ниже:

var mydata = ko.observableArray([
            {
                Categories: ko.observableArray([
                      {
                          Description: "Dairy", ListItems: ko.observableArray([
                          { Description: "Eggs", Quantity: "1 Dz.", IsActive: ko.observable(false) },
                           { Description: "Milk", Quantity: "1 Gallon", IsActive: ko.observable(false) }
                          ])
                      },
                      {
                          Description: "Produce", ListItems: ko.observableArray([
                              { Description: "Lettuce", Quantity: "1 Head", IsActive: ko.observable(false) },
                              { Description: "Oranges", Quantity: "5 ea.", IsActive: ko.observable(false) },
                              { Description: "Greenbeans", Quantity: "1 Thingy", IsActive: ko.observable(false) },
                          ])
                      },
                ])
            }
    ]);
  • 1
    Не могли бы вы конкретнее сказать, в чем проблема? Правильно ли отображаются элементы списка, а флажок не отмечен / не отмечен или это что-то еще?
  • 0
    OPPS. Ладно отредактировал и добавил внизу. Не могу поверить, что я забыл самую важную часть.
Теги:
knockout.js

1 ответ

2
Лучший ответ

Проблема, с которой вы сталкиваетесь, заключается в том, что ваши данные являются простым JSON-объектом и будут связаны только один раз.

Чтобы получить двунаправленное поведение привязки, которое вы ищете, ваши объекты должны быть "наблюдаемыми", например, например:

var mydata = ko.observable({
    Categories: ko.observableArray([
      { IsActive: ko.observable(true) }
    ])
});

Обратите внимание, что вам решать, какие элементы в вашей структуре должны быть наблюдаемыми; это будет зависеть от того, как вы хотите, чтобы привязки велись.

  • 0
    Я следовал вашим инструкциям, см. Выше. Все еще не отключаю подписи, которые следуют.
  • 0
    О, вы не можете отключить метку ... Хотя вы можете отключить ввод.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню