【问题标题】:Nested URLs: issues with route transition嵌套 URL:路由转换问题
【发布时间】:2014-12-01 15:48:08
【问题描述】:

我目前正在努力加入 Ember.js,我在当前的路由设计中遇到了一个问题,它们有嵌套 URL,但是没有嵌套模板,所以它们的配置如下所示:

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

现在,在 Customers/:id 处(提交操作后),在 DS.store 中创建了一个新的 Customer 实例,并将一组空的 Employee 对象也添加到 DS.store。

问题是从“客户”过渡到“员工”,“员工”模板并未实际呈现,“客户”模板被维护。最后一条日志消息是“正在尝试过渡到员工”。

你能告诉我可能是什么问题吗?

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    因为你的路由器,Employees 路由不知道它的父路由是什么。尽管您在此层次结构中定义了路径,但您应该使用嵌套路由(资源)。

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

    【讨论】:

    • 我希望能够拥有没有嵌套路由的嵌套 URL,因为我的模板没有嵌套,但似乎不太可能实现这一目标。 @Microfed
    • @ice 路由和模板是密切相关的。当然,您可以覆盖 Route.renderTemplate 方法 (emberjs.com/guides/routing/rendering-a-template) 来更改数据在路由内的显示方式。但这可能会导致代码的可维护性降低。 :)
    • @Microfed 你能详细说明为什么应该使用路由而不是资源吗?路由过程中的意外行为是什么?在我看来,很难将这种做事方法分开,因为它是一个简单的约定,而这样做是因为它是正确的做法。在这里,我指的是整个“您应该将 this.resource 用于表示名词的 URL,并将 this.route 用于表示修饰这些名词的形容词或动词的 URL。”具体来说,我认为它与传递给该路由的模型有关。
    • @ice this.resource 可以使用,但您需要在资源名称前加上前缀才能构建真正的嵌套结构 (this.resource('customer.employees')。你可以在这里找到更详细的解释:stackoverflow.com/a/14976499/614425
    猜你喜欢
    • 2011-03-18
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多