尽管路由在router.js中指定,但在EmberJS中找不到路由

时间:2015-08-01 08:01:12

标签: ember.js routing

问题是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的路线

2 个答案:

答案 0 :(得分:0)

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

在您的情况下,信息中心的路线名称为: business.dashboard

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

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

答案 1 :(得分:0)

以下是我在检查代码时能够找到的问题:

没有名为" business_name "在模型对象" Business"。并且,您使用了" business_name "作为定义路线时的动态段。

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

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

请尝试一下,让我知道它是否有效。感谢。