Javascript 在主干js中按URL加载模板
我在主干中创建了一个视图来渲染集合。它使用一个模板来格式化数据,模板HTML被写在一个字符串变量中。现在模板变得越来越复杂,我需要将其存储在单独的文件中。主干网中是否有从URL加载模板的方法?在这种情况下,什么是最好的设计模式。代码如下:Javascript 在主干js中按URL加载模板,javascript,ajax,backbone.js,Javascript,Ajax,Backbone.js,我在主干中创建了一个视图来渲染集合。它使用一个模板来格式化数据,模板HTML被写在一个字符串变量中。现在模板变得越来越复杂,我需要将其存储在单独的文件中。主干网中是否有从URL加载模板的方法?在这种情况下,什么是最好的设计模式。代码如下: var PageView = Backbone.View.extend({ template: _.template("<% _.each(items,function (item) { %><tr><td><
var PageView = Backbone.View.extend({
template: _.template("<% _.each(items,function (item) { %><tr><td><%= item.page_id %></td><td><%= item.title %></td></tr><% }); %>"),
initialize: function () {
_.bindAll(this, 'render');
this.model.bind('all', this.render);
},
render: function () {
this.$el.html(this.template({
items: this.model.toJSON()
}));
}
});
var PageView=Backbone.View.extend({
模板:u.template(“”),
初始化:函数(){
_.bindAll(这是“呈现”);
this.model.bind('all',this.render);
},
渲染:函数(){
this.$el.html(this.template({
条目:this.model.toJSON()
}));
}
});
是否有类似于templateURL的东西,以便可以从服务器上的另一个文件动态加载它。我会使用require.js来实现这一点,一开始它可能感觉有些过火,但最终它将获得巨大的回报
主干网本身并没有提供实现这一点的方法,但有许多不同的方法可以实现这一点,并且有很多关于如何设置所需机制的示例 如果你选择使用RequireJs(我建议你最终这样做……考虑到你需要一些时间来学习),你还需要RequireJs的文本插件。有一个关于在主干项目中使用RequireJS和文本插件的教程,可从以下站点获得 设置项目后,在主干视图中加载外部模板非常简单,只需将它们定义为视图的依赖项并将该依赖项传递给变量(以下示例中为projectListTemplate): 另一种可能的方法是,如果您觉得还没有准备好使用RequireJS,并且希望立即将模板移动到不同的文件,那么可以使用一个简单的自定义模板加载程序。Christophe Coenraets编写了自己的,并将其用于一个示例主干项目中。他在github上提供了所有源代码,并提供了教程和解释
他在第一节“外部化模板”中写道,ReuireJS是一个很好的方法,但有点过分,此外,我们还使用了一个requireJS插件——我决定不使用它。 我的解决方案是使用JQuery$。在加载视图之前获取模板HTML,然后使用结果加载在构造函数中定义模板的视图,然后作为选项调用。模板:
var template = $.get("/templates/needed_template.html")
.done(function (res) {
ns.myView = new MyView({template: res});
ns.myView.render();
})
在视图方面,我添加了以下内容:
initialize: function() {
this.template = _.template(this.options.template);
这里也有类似的问题。也许你在这里得到了你的解决方案。你考虑过使用requirejs吗?我读过requirejs文档,它符合逻辑,但会使我的应用程序更复杂。第二个很简单,适合我。谢谢
initialize: function() {
this.template = _.template(this.options.template);