2014-10-07 19 views
0

我目前正在努力使用Ember.js,并且遇到了一个与我当前的路由设计有关的问题,它们嵌套了URL,但是没有嵌套模板,因此它们的配置看起来像像这样:嵌套的URL:路由转换的问题

this.resource('customer', { path: '/Customer/:id' }); 
this.resource('employees', { path: '/Customer/:id/Employees' }); 

现在,在客户/:ID(后提交操作)的新客户实例在DS.store和一组空Employee对象的创建添加,以及,进入DS.store 。

问题是从'客户'转换到'员工','员工'模板没有实际呈现,'客户'模板被维护。最后的日志消息“试图过渡到员工的。

可否请你给我一个提示可能是什么问题?

回答

0

因为你的路由器,员工路线不知道其父的路线是什么。虽然你在这个层次中定义的路径,你应该使用嵌套路由(资源)。

this.resource('customer', { path: '/customer/:id' }, function() { 
    this.route('employees', {path: '/employees'}); 
}); 
+0

我希望能够有没有嵌套的路线嵌套的网址,因为我的模板不嵌套,但它似乎不太可能@Microfed – ice 2014-10-09 10:10:46

+0

@ice路由和模板彼此密切相关,你可以重写Route.renderTem板方法(http://emberjs.com/guides/routing/rendering-a-template/)来改变数据在路线中的显示方式。但是它可能会导致代码维护性降低。 :) – Microfed 2014-10-09 10:17:36

+0

@Microfed你可以请详细说明为什么应该使用路线而不是资源?路由过程中的意外行为是什么?在我看来,将这种做法分开是相当困难的,因为这是一个简单的惯例,并且这么做是因为这是正确的做法。在这里,我指的是整个“你应该使用this.resource代表名词的URL,而this.route代表修饰这些名词的形容词或动词的URL。”具体来说,我认为它涉及传递给该路线的模型。 – ice 2014-10-09 10:46:22