2015-10-04 175 views
1

我猜这可能是有意的,但在文档中找不到。 (如果是故意的,我会通过公关来澄清文档)。组件的onchange事件未触发

裁判:this jsfiddle

我的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} 
}) 

如果我在A组份数据的变化:

flintstones.findAllComponents('person')[1].set('name','Wilma') 

没有'onchange'事件记录到控制台。但是,如果Rint实例使用'onchange'处理程序进行配置,则会记录设置组件中的数据。

故意或错误或我在这里做错了什么?

回答

2

onchange事件仅对组件实例拥有(引入)的数据触发。

使用this.observe(...)将被通知有关组件内使用的任何数据的更改,而不管数据来自何处。