我有一个骨干模型营养品,它包含数量,百分比和测量单位。例如
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>
感谢。
答案 0 :(得分:1)
您需要将nutrition.toJSON()
或_.clone(nutrition.attributes)
传递给模板。
否则,您将获得模型对象,而不是原始数据。
要获取每个子属性,您可以通过嵌套属性进行递归以直接公开它们。否则,您可以通过attributes
对象直接访问它们。例如cholesterol.attributes.<attr>
答案 1 :(得分:1)
Backbone模型的属性不能直接在对象本身上访问。你应该使用
<%= totalFat.attributes.quantity %>