在我的模板中:
<a {{action doSomething someParam}}>my cool link</a>
在路由器
中doSomething: function(jqEvent){
}
但是,jqEvent始终是App.Router的一个实例。我希望我的参数传入。我缺少什么?
感谢。
答案 0 :(得分:0)
使用Ember的most recent version它完全正常,所以我怀疑你使用的是旧版本的Ember。
jsFiddle:http://jsfiddle.net/G4esk/
App.ApplicationRoute = Ember.Route.extend({
events: {
example: function(object) {
console.log(object.get('name'));
}
}
});
答案 1 :(得分:0)
传递给{{action}}
的参数不会被视为文字;它们被视为当前环境中对象的关键。
请参阅https://github.com/emberjs/ember.js/issues/1759和https://github.com/emberjs/ember.js/issues/1796。
因此,
{{action doSomething someProperty}}
将尝试在当前控制器上查找someProperty
属性。
答案 2 :(得分:0)
这是Ember的旧版本。不禁这样,我正在等待我们的Ember升级合并进来。 但这不是原因,尽管路由器会发生变化。
实际上是两部分,
当我在chrome控制台中检查参数时,我没有看到它,因为Chrome有一个优化(至少在控制台中),它会删除未使用的参数。这真的不是Ember的错,但它肯定隐藏了发生的事情。
{{action doSomething someProperty}}
doSomething:function(router,jqEvent){ var someProperty = jqEvent.context; }