1

コントローラーまたはビューからルートを呼び出す適切な方法は何ですか。たとえば、多くの行を持つテーブルがあります。すべての行ビューには、ルーターを呼び出すクリック メソッドがあります。コントローラーまたはビューからアプリをナビゲートするのに問題があります。

以下に例を示します: http://jsfiddle.net/arenoir/Cs938/

App.TableView = Ember.CollectionView.extend({
  tagName: 'table',
  contentBinding: 'controller.rows',
  itemViewClass: Ember.View.extend({
    tagName: 'tr',
    template: Ember.Handlebars.compile("<td>{{view.content.name}}"),
    click: function(){
      var router, tab;
      router = this.get('controller.target.router');
      tab = this.get('content.id');
      router.goTab(tab);
    }
  })
});

以下の投稿が参考になります。EmberJS: コントローラーのアクションからルーターに遷移する方法

4

1 に答える 1

6

これが、ビュー内の遷移ロジックの現在の実装です。

      click: function(){
          var router, tab;
          router = this.get('controller.target.router');
          tab = this.get('content.id');
          router.goTab(tab);
      }

この実装に変更します。

  click: function(){
      var router, tab;
      router = this.get('controller.target.router');
      tab = this.get('content.id');
      router.transitionTo(tab);
  }

これにより、フィドルが修正されます。しかし、あなたの例からは、ビューでトランジションをトリガーする理由が明確ではありません。状態管理は常にルーターで行われる必要があります。もう 1 つの扱いにくい点は、ApplicationController から行を取得することです。ArrayController を使用しないのはなぜですか。したがって、私の観点からは、間違った場所にいくつかのものがあるように見えます。

于 2012-11-21T09:12:51.530 に答える