2012-04-16 85 views
4

到目前爲止,我一直在我的Rails/Backbone.js應用程序中使用EJS模板。 我真的想開始使用backbone.marionette。我能做些什麼來使它與EJS一起工作?如何使用backbone.marionette使用EJS模板?

MyView = Backbone.Marionette.ItemView.extend({ 
    template: "#some-template" 
}); 

它說的,我需要提供一個jQuery選擇到template屬性的文檔,但我不認爲我的EJS模板有一個。

更新:

這是我會怎麼使用模板來常使我的看法:

TasksTree.Views.TaskItem = Backbone.View.extend({ 
... 
    render: function() { 
    ... 
    this.$el.html(JST['tasks_tree/item'](options)); 
    return this; 
    } 

}) 

而且我有item.jst.ejs文件看起來像模板文件夾:

<li> 
    <label><%= taskTitle %></label> 
</li> 

我的模板文件夾包含在application.js

回答

10

有在文檔中一個部分,顯示更換渲染機制的幾個例子,以及:

http://derickbailey.github.com/backbone.marionette/#backbone-marionette-renderer/custom-template-selection-and-rendering

眼看JST提供的模板你,你不需要緩存它們在不過,您可以跳過內置於Marionette的Renderer對象中的大部分功能,並完全替換render功能。


Backbone.Marionette.Renderer.render = function(template, data){ 
    return JST[template](data); 
} 

也將取代與模板路徑,而不是一個jQuery選擇享有使用TEH template屬性:


Backbone.Marionette.ItemView.extend({ 
    template: "tasks_tree/item" 
}); 

希望有所幫助。如果沒有,請告訴我。

+0

我用更多的細節更新了我的問題。因爲我是新手,所以我有點困惑。 [這個問題](http://stackoverflow.com/questions/6557238/format-of-ejs-and-jst-template-files-in-rails-backbone-gem)描述了EJS如何工作。 – lanan 2012-04-18 17:52:18

+0

這太棒了!完美的作品。 – lanan 2012-04-18 20:11:09

1

我發現這種參考是非常有幫助的:https://github.com/marionettejs/backbone.marionette/wiki/Using-jst-templates-with-marionette

你可以用這些方針的東西,它提供了更好的錯誤處理和靈活性更換render功能。

Marionette.Renderer.render = function(template, data) { 
    if(typeof template === 'function') { 
     return template(data); 
    } 
    else { 
     if(!JST[template]) throw "Template '" + template + "' not found!"; 
     return JST[template](data); 
    } 
}; 

然後,您可以指定模板路徑(如前所述):

Backbone.Marionette.ItemView.extend({ 
    template: "tasks_tree/item" 
}); 

或者,如果你的模板是很簡單的,你可以使用函數只返回一個字符串:

​​