我刚开始使用RactiveJs并且在观察输入标记时遇到了一些麻烦,最初使用值进行渲染。
我正在观察下面的输入字段。
{{#invoices:i}}
<input class="text-center" type="date"" value="{{***date_modified***}}">
{{/invoices}}
使用以下
ractive.observe({
'*.*.date_modified': function(newValue, ***oldValue***, keyPath) {
// some function
};
});
挑战是第一次&#34; date_modified&#34;是变化的&#34; oldValue&#34;未定义。第二次&#34; date_modified&#34;改变了&#34; oldValue&#34;正确返回旧值。
&#34; date_modified&#34;最初使用值(例如,22/11/2014)进行渲染,我怀疑这可能是问题所在,因为所有示例都在模板I
时将输入留空有什么想法吗?
由于
答案 0 :(得分:0)
默认情况下,观察员&#39;初始化&#39;使用未定义的oldValue
- 这个想法是,编写一个与应用程序的当前状态做某事的单个函数通常更容易,无论该状态如何变为是,而不是一些初始设置逻辑加上某种单独的变更处理程序。
但您可以通过传递init: false
选项来禁用第一个调用,如下所示:
ractive.observe('foo', handler, { init: false });
然而,在这种情况下,它有点多了。事实证明,你发现了一个错误 - 模式观察者没有*
作为第一个关键。您需要使用invoices.*.date_modified
代替*.*.date_modified
。一个issue has been raised on GitHub - 谢谢!