1

私はこのjsbinを持っています。私の問題は、次のことをトリガーしようとしていることですaction:

<a {{action controllers.nodesIndex.destroyAllRecords this}}><i class="icon-remove-circle"></i><a/>

しかし、私は得る:

Uncaught Error: Nothing handled the event 'controllers.nodesIndex.destroyAllRecords'

icon-remove-circle(右上の小さなアイコンを押して、js コンソールでエラーを確認することでトリガーできます)

しかし、私のコントローラーは適切にセットアップされています:

App.NodesIndexController = Ember.ArrayController.extend({
    destroyAllRecords: function () {
        console.log('destroyAllRecords called');
    },
});

ここで何が欠けていますか?

4

1 に答える 1

2

nodes/indexテンプレートのコントローラーは であるため、App.NodesIndexControllerとして言及する必要がありcontrollers.nodesIndex.destroyAllRecordsます。デフォルトのターゲットは であるため、@Thomas が言ったApp.NodesIndexControllerように言うことができます<a {{action destroyAllRecords}}>

また、レコードの長さを取得するには、{{this.length}}代わりに{{controllers.nodesIndex.length}}.

jsbinを更新しました。

'controllers.controllername.methodname'テンプレートのコントローラー以外のコントローラーを参照している場合にのみas と言う必要があり、必要リストにコントローラーの名前を指定する必要があります。たとえば、「プロファイルのメソッドを呼び出したい場合」です。 ' 'nodes/index' テンプレートからルーティングし、次に

App.NodesIndexController = Ember.ArrayController.extend({
    needs: ['profile'],
});

そしてあなたのテンプレートでは、

<a {{action controllers.profile.methodname}}>

それが役に立てば幸い。

更新:コメントでソリューションとビンを参照してください

于 2013-07-12T11:48:52.153 に答える