2012-04-16 83 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" 
}); 

或者,如果你的模板是很简单的,你可以使用函数只返回一个字符串:

​​