【问题标题】:Route is not found in EmberJS although route is specified in router.js尽管在 router.js 中指定了路由,但在 EmberJS 中找不到路由
【发布时间】:2015-08-01 08:01:11
【问题描述】:

问题是路由在 emberJS 中没有被识别,即使它在 router.js 中以“正确”格式指定,如 emberJS 文档 1.13.0 中所示。这是它现在的样子:

this.route('business', {path: '/business'}, function(){
      this.route('dashboard', {path:'/dashboard/:business_name'})
  });

我在路线/业务下有一个路线仪表板,其中显示以下内容:

export default Ember.Route.extend({
    model: function(){
        return this.store.find('business');
    }
});

无论该人是否已成功登录,这里是重新路由到网页的路由代码:

 var _this = this;
 var user = $.ajax({
                    type: "POST", 
                    url: "http://path/to/login", 
                    data: {
                        emailAddress: this.get('model.emailAddress'),
                        password: this.get('model.password')
                    }
                }).then(function(response, request){
                    if(response != null){ 
                        business.set('businessName', response.business.business_name);
                        business.save('no post'); //I override the .save() so it won't do a post request 
                        _this.transitionToRoute('business.dashboard', business);
                    }
                    else{
                        //skip the welcome part
                    }
                });

尽管使用以前生成新路线的方法(我可能会成功添加),但我不知道为什么它会给我这个错误:

未捕获的错误:没有名为 Dashboard 的路由

【问题讨论】:

  • 您显示的代码看起来不错,除了 {path: '/business'} 应该是。你应该多展示一些代码。你是怎么得到这个错误的?
  • 嘿@Artych,我做了路径:'/business'。我添加了 transitionToRoute
  • 我四处打听,ember 开发人员说这可能与路由有关,模型未正确传递或类似问题。顺便说一句,我是余烬菜鸟。

标签: ember.js routing


【解决方案1】:

您在 transitionToRoute() 函数中错误地指定了路由名称。对于嵌套路由,路由名称将类似于 {parent_route}.{child_route}.

在您的情况下,仪表板的路由名称为:business.dashboard

有关嵌套的更多详细信息,请参阅以下内容: http://guides.emberjs.com/v1.13.0/routing/defining-your-routes/#toc_resetting-nested-route-namespace

希望这会有所帮助。请尝试让我知道它是否有效。谢谢。

【讨论】:

  • 嘿 - 是的,我之前尝试过 business.dashboard,但仍然无法正常工作。另一个 emberJS 开发人员建议使用 business/dashboard。
  • 嗨,是否可以将您的代码放在 ember-twiddle (ember-twiddle.com) 或 JSBin 中。其次,您的路由代码中似乎有一个错误,重新路由了网页。 AFAIK,“用户”变量将持有承诺而不是响应。
  • 嗨@phkavitha - 我想我修正了你所指的,不确定。尽管我对这个该死的“仪表板”错误又回到了原点。这是 github 的要点:gist.github.com/macmania/db44ab49ddd6b3d75f29.
【解决方案2】:

这是我在检查您的代码时发现的问题:

模型对象“Business”中没有名为“business_name”的属性。并且,您在定义路线。

有两种方法可以解决这个问题:

  • 使用特定于模型的序列化程序。
  • 更改模型中的动态段或属性。

请尝试一下,如果它有效,请告诉我。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多