Описание:флажок и поле ввода корреляции в нокауте
У меня есть две вещи, флажок и поле ввода. Вот что я хочу. В моей модели просмотра у меня есть два наблюдаемых, один из которых сохраняет флажок check/uncheck (ture или false), а другой, который сохраняет значение поля ввода. Оба эти значения берутся из базы данных, но у меня они статичны для упрощения. Таким образом, когда страница загружается, и если значение флажка истинно, поле ввода должно быть включено, и оно должно отображать значение. Флажок также должен отображаться как отмеченный. Если флажок не установлен, значение поля ввода должно быть равно нулю, а поле ввода должно быть отключено. Если флажок установлен после снятия флажка, значение поля ввода должно быть равно нулю.
Fiddle:
data-bind="checked: boxChecked" type="checkbox" ></input>
<br/>
Result:
<input data-bind="enable: boxChecked() == true,
value: boxCheked() = true ? result : result = 0" type="text"></input>
Я играл вокруг с скрипку в течение достаточно долгого времени, но не мог понять это.
Буду признателен вам за помощь.
Есть ли способ сделать значение ноль, если флажок снят при загрузке страницы? И почему я не могу это сделать? Я имею в виду, не будет ли это работать? – Stranger
Да, вы можете применить это в конструкторе viewmodel. Кроме того, вы можете помещать что угодно, если хотите (пока оно работает), но рекомендуется использовать нокаут с шаблоном MVVM и, как правило, приводит к более многоразовому коду. Бизнес-логика как * установка свойства viewmodel на определенное значение, основанное на некотором условии * в представлении, противоречит шаблону MVVM, поскольку бизнес-логика принадлежит модели viewmodel. Только логика, связанная с тем, как отображать информацию, должна когда-либо быть в представлении. Но, как всегда, существуют исключения, используйте ваше мнение и т. Д. – Tyrsius
спасибо. Я действительно реализую ваше решение, и я получаю checkbox как проверенный независимо от того, является ли значение true или false. Не знаю, как это решить. Я уверен, что это не имеет никакого отношения к вашему решению, так как ваш пример отлично работает. – Stranger