2013-10-12 22 views
2

即使我明确定义了路由,我的应用仍会继续生成默认路由。我想我忽略了一个命名约定,但是使用谷歌搜索,stackoverflowing,讨论.emberjs.com在电脑上的老式诅咒还没有让我到任何地方。在“ember-app-kit”中被忽略的“新”路由

应用程序/ router.js

var Router = Ember.Router.extend();  

Router.map(function(){     
    this.resource('things', function() { 
    this.route('new');     
    });         
});          

export default Router; 

应用程序/路由/ things_new.js

var ThingsNewRoute = Em.Route.extend({  
    model: function() {      
    window.console.log('hello hello');  
    return this.store.createRecord('thing'); 
    }           
});           

export default ThingsNewRoute;    

参观http://localhost:8000/#/things/new模板呈现良好,没有错误。从Ember的日志输出:

generated -> route:application Object {fullName: "route:application"} ember.js:415 
generated -> route:things Object {fullName: "route:things"} ember.js:415 
generated -> route:things.new Object {fullName: "route:things.new"} ember.js:415 
generated -> controller:application Object {fullName: "controller:application"} ember.js:415 
Rendering application with default view <(subclass of Ember.View):ember267> Object {fullName: "view:application"} ember.js:415 
generated -> controller:things Object {fullName: "controller:things"} ember.js:415 
Rendering things with default view <Ember._MetamorphView:ember283> Object {fullName: "view:things"} ember.js:415 
generated -> controller:things.new Object {fullName: "controller:things.new"} ember.js:415 
Rendering things.new with default view <Ember._MetamorphView:ember293> Object {fullName: "view:things.new"} ember.js:415 
Transitioned into 'things.new' ember.js:415 
Ember Debugger Active 

问题是这样的:

generated -> route:things.new Object {fullName: "route:things.new"} ember.js:415 

因为我定义它,它不应该产生这样。是否有一些我没有遵循的文件命名约定?

也在Chrome浏览器中查看Ember Inspector。在ThingsNewRoute在“自己的属性”:

routeName: things.newSend 
controller: (generated things.new controller) 
lastRenderedTemplate: things.new 
teardownOutletViews: [ function() { ... } ] 
+0

你正在为你的项目使用哪个构建工具? – chrmod

+0

@chrmod,他正在使用ember-app-kit – intuitivepixel

+0

[ember-app-kit](https://github.com/stefanpenner/ember-app-kit) – veidt

回答

1

在余烬-APP-套件,让您的路线正确地拾起你必须把解析器他们在子目录中。

例如,对于您的使用情况下,由具有路由器的地图,如:

Router.map(function(){     
    this.resource('things', function() { 
    this.route('new');     
    });         
}); 

的目录结构应该是:

app/ 
    ... 
    routes/ 
     things/ 
     new.js 
     ... 

因为解析器预计路线ThingsNewRouteapp/routes/things/new.js找到

希望它有帮助。

+0

早些时候尝试过,并认为它没有奏效。看到你的答案后再试一次,当然,现在都是桃色。谢谢! – veidt

0

ThingsNewRoute应该是你的应用程序对象的属性。因此,声明将是这样的:

App.ThingsNewRoute = Em.Route.extend({ 
    .... 
}) 

与变量替换name App给您分配了您的Ember.Application.create();

+0

根据问题的评论,我使用了ember -app-KIT。 – veidt