我猜这可能是有意的,但在文档中无法提及。 (如果是故意的,我会做一个公关来澄清文档)。
我的HTML:
<div id='container'/>
和我的javascript:
Person = Ractive.extend({
template : '<p>{{name}}</p>',
onchange : function(obj){console.log(obj)}
})
flintstones = new Ractive({
el : '#container',
template : "{{#names}}<person/>{{/}}",
data : {names : [{id:1, name:"Fred"},{id: 2, name:"Barney"}]},
components : {person : Person}
})
如果我使用以下内容在组件中进行数据更改
flintstones.findAllComponents('person')[1].set('name','Wilma')
没有&#39; onchange&#39;事件记录到控制台。但是,如果flintstones Ractive实例配置了&#39; onchange&#39;处理程序,然后记录组件中的数据。
故意或错误或我在这里做错了什么?
答案 0 :(得分:2)
onchange
事件仅针对组件实例拥有(引入)的数据触发。
使用this.observe(...)
通知组件中使用的任何数据的更改,无论数据源自何处。