在我的模板中:
<a {{action doSomething someParam}}>my cool link</a>
在路由器中
doSomething: function(jqEvent){
}
但是,jqEvent 始终是 App.Router 的一个实例。我希望传入我的参数。我错过了什么?
谢谢。
在我的模板中:
<a {{action doSomething someParam}}>my cool link</a>
在路由器中
doSomething: function(jqEvent){
}
但是,jqEvent 始终是 App.Router 的一个实例。我希望传入我的参数。我错过了什么?
谢谢。
使用最新版本的 Ember 可以正常工作,所以我怀疑您使用的是旧版本的 Ember。
jsFiddle:http: //jsfiddle.net/G4esk/
App.ApplicationRoute = Ember.Route.extend({
events: {
example: function(object) {
console.log(object.get('name'));
}
}
});
您传递给的参数{{action}}
不被视为文字;它们被视为当前上下文中对象的键。
请参阅https://github.com/emberjs/ember.js/issues/1759和https://github.com/emberjs/ember.js/issues/1796。
因此,
{{action doSomething someProperty}}
someProperty
将尝试在当前控制器上查找属性。
它是旧版本的 Ember。没办法,我目前正在等待我们的 Ember 升级合并。但这不是原因,尽管路由器会改变。
其实是两部分
当我在 chrome 控制台中检查参数时,我没有看到它,因为 Chrome 有一个优化(至少在控制台中)可以去除未使用的参数。这确实不是 Ember 的错,但它肯定掩盖了正在发生的事情。
{{action doSomething someProperty}}
doSomething:函数(路由器,jqEvent){ var someProperty = jqEvent.context; }