0

私のテンプレートでは:

<a {{action doSomething someParam}}>my cool link</a>

ルーター内

doSomething: function(jqEvent){

}

ただし、jqEvent は常に App.Router のインスタンスです。パラメータが渡されると思っていましたが、何が欠けていますか?

ありがとう。

4

3 に答える 3

0

最新バージョンの Emberを使用すると問題なく動作するため、古いバージョンの Ember を使用していると思われます。

jsFiddle: http://jsfiddle.net/G4esk/

App.ApplicationRoute = Ember.Route.extend({
    events: {
        example: function(object) {
            console.log(object.get('name'));            
        }
    }
});
于 2013-02-21T23:12:32.597 に答える
0

に渡すパラメーターは{{action}}リテラルとして扱われません。それらは、現在のコンテキストでオブジェクトへのキーとして扱われます。

https://github.com/emberjs/ember.js/issues/1759およびhttps://github.com/emberjs/ember.js/issues/1796を参照してください。

したがって、

{{action doSomething someProperty}}

someProperty現在のコントローラーのプロパティを検索しようとします。

于 2013-02-21T23:12:52.220 に答える
0

Emberの古いバージョンです。しょうがないです。現在、Ember のアップグレードがマージされるのを待っています。ルーターは変更されますが、それが原因ではありません。

実は二部構成だったのですが

  1. アクションがルーターに到達すると、アクションにはルーターと jqEvent.context にパラメーターが付加された jqEvent の 2 つの引数が渡されます。
  2. Chromeコンソールで引数を調べたとき、Chromeには未使用の引数を削除する最適化が(少なくともコンソールで)あるため、表示されませんでした。これは実際には Ember のせいではありませんでしたが、何が起こっているのかを明らかに隠していました。

    {{action doSomething someProperty}}

    doSomething: function(router, jqEvent) { var someProperty = jqEvent.context; }

于 2013-02-22T02:58:33.223 に答える