我的应用程序有嵌套模板。这将由以下路由器显示:
this.resource('products', function() {
this.resource('product', {path: ':product_id'}, function() { // Error: There is no route named product
this.resource('page', {path: 'page/:page_id'});
});
});
感谢@ kingpin2k对此路由器的帮助:Ember.js How to show two routes at the same time
问题是,没有页面资源可以找到产品路径。当我添加页面资源时,product.index路由现在具有正确的产品路径网址,正如我在Ember Inspector中看到的那样:
路线和网址:
`product` | (empty)
`product.index` | /products/:product_id // this one must be on the above `product` route
`page` | /products/:product_id/page/:page_id // correct
如您所见,新的product.index
造成了麻烦。但只有在我添加页面路径时才会出现.index变体。
修改以清除,使用上述路由器我收到错误:Error: There is no route named product
。
生成该错误的代码位于视图中:
var router = self.get('controller.target.router');
var product = self.get('content').findBy('index', 0);
router.transitionTo('product', product); // Error
答案 0 :(得分:1)
你会试试吗
var controller = self.get('controller');
var product = self.get('content').findBy('index', 0);
controller.transitionToRoute('product', product);