Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript BackboneJs:从嵌套对象在集合中创建多个模型_Javascript_Backbone.js_Backbone.js Collections_Backbone Model - Fatal编程技术网

Javascript BackboneJs:从嵌套对象在集合中创建多个模型

Javascript BackboneJs:从嵌套对象在集合中创建多个模型,javascript,backbone.js,backbone.js-collections,backbone-model,Javascript,Backbone.js,Backbone.js Collections,Backbone Model,这是一个REST响应,我想将“图像”记录放在我的收藏中,并将每个记录作为模型处理 { "code":"OK", "message":"Success", "errorFlag":"N", "errors":null, "data": { "images": { 0: img0, 1: img1, 2: img2 } } } 如何使“图像”中的记

这是一个REST响应,我想将“图像”记录放在我的收藏中,并将每个记录作为模型处理

{
    "code":"OK",
    "message":"Success",
    "errorFlag":"N",
    "errors":null,
    "data": {
        "images": {
            0: img0,
            1: img1,
            2: img2
        }
    }
}
如何使“图像”中的记录成为图像集合的唯一模型,并将代码、消息、错误等键放入其他模型或集合

谢谢。

使用


另外,将数据存储在密钥中通常不是个好主意。

谢谢,它正在工作。为什么将数据存储在密钥中是个坏主意?在本例中,我们只在解析函数中使用它。这不是一条刻板的规则,但根据我在键中存储的经验,尤其是使用数字作为键是处理数据的必经之路(在我的例子中,下划线是一个巨大的帮助),另外,如果在示例中使用数字作为键,则不能使用像图像这样的点符号。0。因此,最好将图像从{0:“img0”,1:“img1”}更改为[{“id”:“0”,“name”:“img0”},{“id”:“1”,“name”:“img1”}],但最终决定取决于您的需要。
var Image.Model = Backbone.Model.extend({});
var Image.Collection = Backbone.Collection.extend({
    model: Image.Model,
    url: 'rest/url'
});
var images = new Image.TestCollection();
images.fetch();
// server.js
app.get('/api/data', function (req, res) {
    var result = {
        "code": "OK",
        "message": "Success",
        "errorFlag": "N",
        "errors": null,
        "data": {
            "images": {
                0: "img0",
                1: "img1",
                2: "img2"
            }
        }
    };
    res.json(result);
});

// client.js
var Image = Image || {};
Image.Model = Backbone.Model.extend({
});

Image.TestCollection = Backbone.Collection.extend({
    model: Image.Model,
    url: '/api/data',
    parse: function(response) {
        window.response =response;
        var images= [];
        for(var key in response.data.images){
            if(response.data.images.hasOwnProperty(key)){
                images.push(response.data.images[key]);
            }
        }
        return images;
    }
});
var images = new Image.TestCollection();
images.fetch();