与预期的任何项目一样,我的主要HTML文件的90%由许多不同的模板组成,如下所示:
<script type="text/template" id="template-parametros">
<div id="parametros">
<h2>Parâmetros</h2>
<table id="tab-parametros">
<tr><td>Descrição</td><td>Tipo</td><td>Locale</td></tr>
</table>
<button id="parametros-ad">Adicionar</button>
</div>
</script>
我想将它们放在其他地方,因此UX用户可以自己处理它们。将它们放在另一个文件中很容易,但我怎样才能在以后导入它们?我已经尝试但是浏览器尝试了,当然,失败了,把它解释为javascript代码。 type =“text”也失败了。有什么想法吗?
谢谢!
答案 0 :(得分:2)
我使用带有文本插件的模块加载器(requireJS)。它允许您将模板文件定义为参数,并在Backbone View中使用。
带有require的Backbone View看起来像这样。
define([
'jquery',
'underscore',
'backbone',
'text!/templates/templateFileName.html' // Define the template using text! plugin
], function($, _, Backbone, myTemplate) { // Include the template as an argument
"use strict";
ViewName = Backbone.View.extend({
template: _.template(myTemplate), // Setup my template (underscore)
events: {
...
},
initialize: function() {
...
},
render: function() {
$(this.el).html(this.template()); // render the template
return this;
}
});
return ViewName;
});
除此之外,使用下划线的_.template()
可以很容易地插值。
假设我的templateFileName.html看起来像这样
<section>
<div>
<%= name %>
</div>
<div>
<%= age %>
</div>
</section>
您所要做的就是传递带有这些属性名称的哈希来填充html。
var myHash = {"name":"Felix", "age":"9"};
$(this.el).html(this.template(myHash));
答案 1 :(得分:0)
怎么样:
if (!async) async = false;
$.ajax({
async: async,
url: '/template/' + templateId,
dataType: 'json',
success: function(response) {
$('body').append(response.content);
}
});