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);
  }

这修复了小提琴。但是从您的示例中不清楚,为什么要在视图中触发转换。状态管理应该始终发生在路由器中。另一个尴尬的事情是您从 ApplicationController 获取行。为什么不使用 ArrayController。所以从我的角度来看,似乎有些东西放错了地方。

于 2012-11-21T09:12:51.530 回答