从控制器或视图调用路由的正确方法是什么。例如,我有一个包含许多行的表。每一行View都有一个应该调用路由器的click方法。它不起作用我无法从控制器或视图导航应用程序。
以下是一个示例: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: How to transition to a router from a controller's action
答案 0 :(得分: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);
}
这解决了小提琴。但是从您的示例中可以看出,为什么要在视图中触发Transitions。状态管理应始终在路由器中进行。 另一个尴尬的事情是你从ApplicationController获取行。为什么不使用ArrayController。所以从我的观点来看,似乎有些事情出错了。