我对使用带有 jade/underscore 的 backbone 模板感到有点困惑。
我有一个主干模型,里面有几个数组,我不确定如何渲染数组属性。我可以将它们移动到一个单独的主干集合和 View 中,但在这种情况下这似乎有点过分了。
我关注了this blog post on using backbone with jade并将以下内容添加到我的 Backbone 文件中
_.templateSettings = {
interpolate : /\{\{(.+?)\}\}/g
};
它允许我在这个庄园中渲染模型属性:
//in my JavaScript
this.template = _.template($("#some-template").html());
//in my .jade template
input.text(type='text', name="name", value='{{name}}')
我想解决的是如何对模型中的数组之一进行简单循环。例如
- for (var child in children)
{{child}}
但我对正确的语法很困惑,jade 开始的地方和下划线接管等等。谢谢。
最佳答案
你不能在浏览器中使用 jade(嗯,从技术上讲你可能可以,但与 backbone 一起使用而不是下划线并不常见)。您将在那里使用下划线模板。 The docs on _.template表明您可以评估 javascript 并使用 _.each 方法循环遍历模型的数组属性。
它最终会在您 View 的 render
中看起来像这样功能。为了提高效率,您需要将模板函数缓存为 View 的一个属性,但为了简单起见,我将其内联。例如,假设您有一个 Car
包含 drivers
列表的模型作为驱动程序名称的数组。
var template = "<% _.each(model.drivers, function(name) { %> <li><%= name %></li> <% }); %>";
return _.template(template, this);
请注意,您需要提供 evaluate
模板设置中的语法,因为此示例包括模板标记的插值样式 ( <%=
) 和求值样式 ( <%
)。目前,您只有 mustache 样式插值,这还不够。
关于javascript - Backbone.js Jade 和循环模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6883787/