1

我有一个主干模型营养项目,其中包含数量、百分比和测量单位。例如

var nut = Backbone.Model.extend({
defaults: {
    quantity: '0',
    percent: 0,
    uom: 'g',
}
});

我有另一个模型,它包含产品的全部营养

var nutrition = Backbone.Model.extend({
defaults:{
servingSize: new nut(),
calories: new nut(),
caloriesFromFat: new nut(),
totalFat: new nut(),
saturatedFat: new nut(),
cholesterol: new nut(),
sodium: new nut(),
totalCarbohydrate: new nut(),
dietaryFiber: new nut(),
sugars: new nut(),
protein: new nut(),
vitaminA: new nut(),
vitaminC: new nut(),
calcium: new nut(),
iron: new nut(),    
},
});

但是当我通过将营养模型传递给下划线模板来打印营养时,我看到的是未定义的。下划线不支持嵌套属性吗?

<tr>
<td><strong>Total Fat <%=totalFat.quantity%> <%=totalFat.uom%></strong></td>
<td class="dv"><%=totalFat.percent+'%'%></td>
</tr>
<tr>
 <td class="sub">Saturated Fat <%=saturatedFat.quantity%> <%=saturatedFat.uom%></td>
 <td class="dv"><%=saturatedFat.percent+'%'%></td>
 </tr>

谢谢。

4

2 回答 2

1

您需要传递nutrition.toJSON()或传递_.clone(nutrition.attributes)给模板。

否则,您将获得模型对象,而不是原始数据。

要获取每个子属性,您可以递归嵌套属性以直接公开它们。否则,您可以通过attributes对象直接访问它们。例如cholesterol.attributes.<attr>

于 2013-09-06T16:42:03.407 回答
1

骨干模型的属性不能直接在对象本身上访问。你应该使用

<%= totalFat.attributes.quantity %>
于 2013-09-06T16:43:52.180 回答