1

さて、更新されたすべてのガイドを読んでも、ビューからコントローラーアクションが呼び出されない理由を理解できません。私の残り火アプリには、次のようにapplication.handlebarsに挿入されたナビゲーションビューがあります。

{{view App.NavigationView}}
{{outlet}}

ナビゲーションコントローラーは次のようになります。

App.NavigationController = Ember.ObjectController.extend({
  navAction: function() {
    console.log('navAction');
  }
});

ナビゲーションテンプレート:

<ul class="nav">
  <li>{{#linkTo "dashboard"}}Dashboard{{/linkTo}}</li>
  <li>{{#linkTo "contacts"}}Contacts{{/linkTo}}</li>
  <li>{{#linkTo "campaigns"}}Campaigns{{/linkTo}}</li>
  <li>{{#linkTo "transactions"}}Transactions{{/linkTo}}</li>
  <li><a {{action "navAction"}}>navAction</a></li>
</ul>

何か案は?前もって感謝します。

4

3 に答える 3

2

{{view App.NavigationView}}最初の間違いは、NavigationControllerが注入されていないために使用することだと思います。

{{rendernavigation}}のような新しい{{render}}ヘルパーを使用してみてください。これは、NavigationView、NavigationController、テンプレート「navigation」の両方を検索し、すべて一緒に配線する必要があります。

次に、{{action}}ヘルパーがドキュメントで説明されているように動作するようになりました:http://emberjs.com/guides/templates/actions/

これが短い例です({{render}}の使用を見逃してくださいhttp://jsfiddle.net/JLHuG/40/

ここでは、現在のルートでアクションを定義しましたが、コントローラーで定義する(コメントを外す)と、コントローラーによって処理されます。

于 2013-01-03T16:33:21.473 に答える
1

次の投稿を ご覧ください。クリックイベントを伴う{{action}}は、v2Emberルーターの機能をトリガーしません

{{linkTo}}という新しいヘルパーの使用について説明しています

于 2013-01-03T10:45:14.570 に答える
0

{{action}}ヘルパーでターゲットオプションを指定して、どのオブジェクトがメソッド呼び出しを受け取るかを指定します。例えば:

{{action "navAction" target = "controller"}}

ターゲットオプションが指定されていない場合、通常はルーターに設定されているcontroller.targetプロパティを指します。ただし、このようにターゲットをコントローラ自体に設定することができます。

App.NavigationController = Ember.ObjectController.extend({

       init : function(){
        this._super();
        this.set("target", this);
  },

navAction: function() {
console.log('navAction');  

}});

{{action}}ヘルパーについて詳しく説明している次の要点を参照できます: https ://gist.github.com/3595069

于 2013-01-03T05:57:12.093 に答える