Двусторонняя привязка ввода с RactiveJs

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

Я наблюдаю поле ввода ниже.

 {{#invoices:i}}
     <input class="text-center" type="date"" value="{{***date_modified***}}">
 {{/invoices}}

Используя ниже

 ractive.observe({
        '*.*.date_modified': function(newValue, ***oldValue***, keyPath) { 
               // some function 
         };
 });

Проблема заключается в том, что в первый раз «date_modified» измененное «oldValue» не определено. При втором изменении «date_modified» «oldValue» правильно возвращает старое значение.

«date_modified» изначально отображается со значением (например, 22/11/2014), что, как я подозреваю, может быть проблемой, поскольку все примеры оставляют ввод пустым, когда шаблон I

есть идеи?

Спасибо


person Mark Collins    schedule 24.04.2014    source источник


Ответы (1)


По умолчанию наблюдатели «инициализируются» неопределенным oldValue. Идея состоит в том, что часто бывает проще написать одну функцию, которая что-то делает с текущим состоянием приложения, независимо от того, как это состояние появилось. , а не какая-то логика начальной настройки плюс какой-то отдельный обработчик изменений.

Но вы можете отключить этот первый вызов, передав параметр init: false, например:

ractive.observe('foo', handler, { init: false });

Однако в этом случае есть нечто большее. Оказывается, вы обнаружили ошибку — наблюдатели шаблонов не могут иметь * в качестве первого ключа. Вам нужно будет использовать invoices.*.date_modified вместо *.*.date_modified. На GitHub была поднята проблема — спасибо!

person Rich Harris    schedule 24.04.2014