我有一个通过这样的绑定传递给我的Ractive组件的对象:

<Component obj={{someObject}} />


Component中,我定义了以下oninit方法:

oninit: function () {
  this.set('someObjectClone', JSON.parse(JSON.stringify(this.get('someObject'))));
}


但是,使用someObjectClone双向绑定模板中的<input>元素会导致警告:


  Ractive.js:用于双向绑定的“ someObjectClone.someValue”引用不明确,可能会导致意外结果。考虑初始化数据以消除歧义


如果我只是尝试不使用双向绑定就打印值,则不会打印任何内容。好像根本没有设置该值。但是,如果我在console.log(this.get())中执行oninit,则可以看到它已设置。 DOM是否未更新?

有人可以帮我吗?

我正在使用Ractive 0.8.0-edge,并设置了JSFiddle here

问候,

最佳答案

在您的示例中,组件参数中的event设置为some

<Component event="{{some}}"/>


然后将该对象复制到clone路径:

this.set('clone',  JSON.parse(JSON.stringify(this.get('event'))) );


因此,在模板中,使用{{clone.value}}

对于模糊的ref警告,请在数据中设置一个默认值,以便Ractive知道该值将在组件的根目录中找到(请参见http://jsfiddle.net/kjj6s709/6/):

data: {
    clone: null
},

关于javascript - 主动“考虑初始化数据以消除歧义”问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35139795/

10-12 21:00