ractive warning Двусторонняя привязка не работает с выражениями

Это демонстрация, когда я устанавливаю флажок "выбрать все", в консоли появляется предупреждение, что сказать

Two-way binding does not work with expressions (`items.length===hasChooedItems().length` on <input>, я меняю форму версии ractive с "последней" на "0.6.1", когда я нажимаю "выбрать все", в консоли появляется ошибка, которая говорит Cannot read property 'split' of undefined. Зачем?


person user3387471    schedule 10.04.2015    source источник


Ответы (1)


Предупреждение, которое вы получаете в последней версии, по существу защищает вас от ошибки, которую вы видите в 0.6.1.

Двусторонняя привязка работает только с простыми ссылками (например, <input type='checkbox' value='{{foo}}'>), потому что Ractive знает, как обновить свою модель, когда вы взаимодействуете с этим флажком, переключая значение foo — более сложные выражения не могут использовать двустороннюю привязку (если value='{{a || b}}' , нет способа определить, например, a или b должно переключаться). Таким образом, в этих случаях мы должны прослушивать события change и обрабатывать их самостоятельно (отсюда on-change='toggleAll').

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

Вы можете либо проигнорировать его - это безвредно - либо убрать предупреждение, указав twoway='false' на входе. Это равносильно тому, чтобы сказать: «Все в порядке, Ractive, я понял». Вот форк вашей скрипки с этим изменением в строке 17.

person Rich Harris    schedule 10.04.2015