2013-09-21 79 views
4

我有一個路由器映射是這樣的:組織燼模板文件夾

this.resource('eng', function(){ 
    this.route('home'); 
    this.resource('eng.rent', {path: 'rent' }, function(){ 
     this.route('boulderSmall', {path: 'boulder-small'}); 
     this.route('boulderXl', {path: 'boulder-xl'}); 
    });  
}); 

文件存儲在「模板/工程」文件夾中的模板;對於「home」和「eng.rent」路由,一切正常:Ember可以自己找到模板文件所在的位置;但對於其他路線我必須指定的模板,如:

Importclimbing.EngRentBoulderSmallRoute = Importclimbing.StdEngRoute.extend({ 
    renderTemplate: function() { 
     this.render('eng/boulderSmall'); 
    } 
}); 

有人能解釋灰燼如何查找模板文件?例如,如果我沒有像上面那樣爲EngRentBoulderSmallRoute指定「renderTemplate」,那麼該模板將不會呈現(即使我將「boulderSmall.hbs」文件放入「template」文件夾而不是「template/eng」;因此,如果我想將「boulderSmall.hbs」存儲到「templates/eng/rent」文件夾中,應該將哪個路徑傳遞給renderTemplate函數?

回答

3

最後我擺脫了這一點; kiwiupower的回答是正確的,因爲Ember按照指示在文件夾和子文件夾中查找模板文件; 這個問題是由於yeoman,我用於開發;在grunt文件中,默認設置僅通過一級文件夾查找Ember模板;

使自耕農能夠在模板文件夾結構也再深入,我做了這個變化:

1到手錶任務livereload:

emberTemplates: { 
      files: '<%= yeoman.app %>/templates/**/**/*.hbs', 
      tasks: ['emberTemplates', 'livereload'] 
     }, 

我添加了一個「**/「爲了讓任務手錶也模板目錄

2灰燼模板任務的子文件夾的第二個層次:

emberTemplates: { 
     options: { 
      templateName: function (sourceFile) { 
       var templatePath = yeomanConfig.app + '/templates/'; 
       return sourceFile.replace(templatePath, ''); 
      } 
     }, 
     dist: { 
      files: { 
       '.tmp/scripts/compiled-templates.js': '<%= yeoman.app %>/templates/{,*/}{,*/}*.hbs' 
      } 
     } 
    } 

我在dist.files對象中添加了一個「{,/}」; 如果你需要yeoman來監視/編譯第三級子文件夾或更多,你需要修改這兩項任務,增加更多的「 * /」和「{,* /}」

5

您的文件夾結構應該看起來像這一點。

首先,你需要重命名eng.rent路線rent所以路由器看起來像這樣

this.resource('eng', function(){ 
    this.route('home'); 
    this.resource('rent', {path: 'rent' }, function(){ 
     this.route('boulderSmall', {path: 'boulder-small'}); 
     this.route('boulderXl', {path: 'boulder-xl'}); 
    });  
}); 

然後你的模板和文件夾應該以這種方式命名。

templates   ## this is a folder 
    |--eng   ## this is a folder 
     |--home.hbs 
    |--rent  ## this is a folder 
     |--boulder_small.hbs 
     |--boulder_xl.hbs 
    application.hbs 
    eng.hbs 
    rent.hbs 

我希望這會有所幫助。 乾杯

+0

不幸的是它不工作;如果我將「reng.hbs」重命名爲「eng.rent.hbs」並將其放入「模板」文件夾中,則它不會呈現(可以將它保存到templates/eng文件夾中並簡單地命名爲「rent.hbs」) ;如果我把hbs文件放到eng.rent子文件夾中,它們不會呈現... –

+0

我剛更新了應該爲你工作的答案。乾杯 – kiwiupover

+0

不,還不行;這是我所做的第一次嘗試之一(除了我已經在camelcase中命名了所有.hbs文件,例如boulderSmall.hbs);我使用yeoman部署應用程序的應用程序,我不知道這是否會改變一些東西... –