我尝试了一些与类似问题相关的解决方案,但仍然没有运气。除了嵌套(下面)之外,json结构并不复杂。
{ "name" : "John Smith",
"gender" : "male",
"address" : { "city" : "New York",
"state" : "NY"
}
}
我的目标是在erb文件中访问“city”和“state”,如下所示。
<script id="person-template" type="text/template">
<div class="person">
<span class="name"><%%= get('name') %></span>
<span class="gender"><%%= get('gender') %></span>
<span class="city"><%%= get('city') %></span>
<span class="state"><%%= get('state') %></span>
</div>
</script>
现在我被困在get('city')并得到('state'),不知道如何处理它。非常感谢提示。
答案 0 :(得分:0)
在模型定义中,您希望覆盖解析方法以根据需要返回数据。
var YourModel = Backbone.Model.extend({
parse: function(data){
return {
name: data.name,
gender: data.gender,
city: data.address.city,
state: data.address.state
};
}
});
如果您从json中明确设置模型值,那么您的问题会略有不同。您可以检索模型的地址部分并直接访问它的属性:
person.get('address').city // this should contain the city value
警告:强>
如果你这样做,那么你检索的address
对象将是可变的,所以:
person.get('address')。city =“Denver”
将更改address属性而不会触发任何更改事件。因此,通常情况下更好: