模板中的骨干模型对象

时间:2013-10-27 13:59:12

标签: javascript backbone.js underscore.js

在我的骨干模型中,我有一个像这样的对象

 {
   lunsize: "big",
   type: {mike: "who", james: "him"}
}

当我这样做时,在我的模板中

<% _.each(type, function(sip) { %>
<%= sip %>

<% }); %>

我得到的结果是whohim

想知道如何遍历整个模型本身,而不仅仅是类型字段。

PS:我正在使用toJSON()将我的模型转换为js对象

1 个答案:

答案 0 :(得分:2)

您可以传递variable template设置。这指示下划线创建一个期望给定名称的变量的函数,而不是使用with将范围更改为传递的数据对象的默认行为。

创建Backbone模板时,传递变量名称:

_.template(yourTemplate, null, {variable: "data"});

然后,您可以通过模板中的变量名访问您的数据:

<% _.each(data, function (val, key) { %>
  ...
<% }); %>

由于with非常慢,因此具有更快渲染的附加优势。来自the underscore docs

  

默认情况下,template通过with语句将数据中的值放在本地作用域中。但是,您可以使用变量设置指定单个变量名称。这可以显着提高模板渲染的速度。