如何使用骨干解析嵌套的json?

用户名

我尝试了一些与类似问题相关的解决方案,但还是没有运气。除了嵌套(如下),json结构不是很复杂。

{ "name" : "John Smith",
  "gender" : "male",
  "address" : { "city" : "New York",
                "state" : "NY"
              }
}

我的目标是在erb文件中访问“城市”和“州”,如下所示。

<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')和get('state')的问题,不知道如何处理。非常感谢您的提示。

加布里埃尔

在模型定义中,您想覆盖parse方法以根据需要返回数据。

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 =“丹佛”

将在不触发任何更改事件的情况下更改address属性。因此,通常最好选择以下两种方法之一:

  • 具有平坦的模型结构(上面的parse方法就是一个例子)
  • 复制对象值以进行修改或返回(使用_.clone或其他方式)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章