私のテンプレートでは:
<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: function(router, jqEvent) { var someProperty = jqEvent.context; }