使用json root的Backbone.js序列化

时间:2011-11-11 18:56:08

标签: json persistence backbone.js

我发现backbone.js期望以下形式的json:

  

{ “ID”:5 “标题”: “富”, “体”: “酒吧”}

但是,我发现json的根源是合理的,特别是当模型嵌套并与其他模型相关时。我如何说服backbone.js以这种方式理解json:

  

{ “消息”:{ “ID”:5 “标题”: “富”, “体”: “酒吧”}}

2 个答案:

答案 0 :(得分:1)

这个问题可能意味着两件事:

  • 您有一个JSON并希望实例化一个新模型
  • 或者您有一个提供以下字符串的Web服务

由于第一种情况相当微不足道,我想你的意思是第二种情况。

如果您的网络服务吐出这样的JSON,您可以覆盖BackboneJS模型和集合的parse方法。

基本上你可以使用Backbone's implementation of parse for models并根据需要进行修改。

在你的情况下,这应该可以解决问题:

parse : function(resp, xhr) {
  return resp.message;
},

集合的实现可能看起来不同,我没试过。

答案 1 :(得分:0)

请告诉我这是否有帮助。你可以在这里看到它:http://jsfiddle.net/kahhor/haPFD/

(function($){

    window.MyModel = Backbone.Model.extend({
    defaults:{"message":{"id":5,"title":"Foo","body":"bar"}}
});

window.MyView = Backbone.View.extend({

        render: function() {
            template= _.template($('#template').html());
            $(this.el).html(template(this.model.toJSON()));
            $('#container').html(this.el);
        }
});

})(jQuery);

$(document).ready(function() {
    var MyModel1 = new MyModel ();

    var MyView1 = new MyView ({model: MyModel1});
    MyView1.render();
});

<div id="container"></div>

<script type="text/template" id="template">
    <%= message.id %><br>
    <%= message.title %><br>
    <%= message.body %><br>

</script>