(我不知道这是一个反复的问题还是一个普通的javascript问题)
我有一个Ractive模型" item":
window.item = new Ractive({
el: "#container",
template: "<p>words</p>",
oninit: function() { window.little_ractive.set({ 'thing_to_do': this.do_this, 'item': this }); },
do_this: function() { this.say("yeah baby"); },
say: function(what) { console.log(what); }
});
请注意,模型在另一个 Ractive模型中初始化了两个属性,如下所示:
window.little_ractive = new Ractive({
finish: function() { this.get('thing_to_do').apply(this.get('item')); }
});
我们可以观察到little_ractive已正确初始化,其属性指向项目模型及其&#34; do_this&#34;方法
如果我们现在执行:
little_ractive.finish()
上下文(&#39;此&#39;)在&#34; do_this&#34;中错误地建立了方法,并返回错误&#34; this.say()不是函数&#34;
如何从另一个模型执行一个Ractive模型的方法?
更新: jsfiddle使用Ractive版本1.0.0 build9。 Ractive版本0.7.3没有出现这个问题,它可以按预期工作。
更新:意外行为首次出现在0.8.0版本中
答案 0 :(得分:1)
存储在ractive实例数据根目录下的任何函数都会自动绑定到实例,例如ractive.set('foo', function () { console.log('this will always be ractive'); })
。这样就可以调用根函数在模板中按预期执行。
如果移动不的函数需要绑定一个深度,例如ractive.set('fns.foo', function () { console.log('this is not bound'); })
,然后您可以根据需要传递它们call
/ apply
。 fiddle