backbonejs: коллекция инициализации в вид модуля имеют только одну модель

Обновить

December 2018

Просмотры

154 раз

2

У меня есть model:

window.LayerModel = Backbone.Model.extend({

        defaults:{
            'id':'unknow',
            'type':'unkonw',
            'preId':'unknow',

            'data': {}
        }
}

Затем я определил коллекцию:

window.LayerManageCollection = Backbone.Collection.extend({
            model: LayerModel
    }) 

то я инициализировать его в виде:

        window.LayerMasterManageView = Backbone.View.extend({

              initialize: function () {
                  //here I have a gobal javascript variable named "localdata"
                  //which have 17 items in an array,each of them is object type

                  this.collection = new LayerManageCollection(localdata);
                  console.log('this collection', this.collection);
              }
}

но длина коллекции составляет 1!, и только одна модель !,

странная вещь, если изменение "defaults"на "default"результат коллекции , как я желал, длина которого составляет 17

Почему это происходит? Как я могу решить эту проблему?

2 ответы

4

по умолчанию idAttributeдля модели id. Поскольку вы Определяя idв вашем defaultsвы собираетесь всегда создать такую же модель, так как ошибки Backbone спокойно , когда создается дубликат модели, поэтому вы видите только 1 модель.

0

я думаю , ваша проблема с объектами присутствуют в вашем localdata.
сколько объектов в вашем localdataимеют разные idполя
либо вы должны предоставить другой идентификатор для каждого объекта в вашем localdataмассиве или просто удалить idполе из defaultsв модели , LayerModel

когда вы измените название от defaultsдо , defaultто , потому что нет идентификатора по умолчанию магистральный не принимает его в качестве новой модели и , следовательно , добавляет его в коллекцию.

так что вы можете изменить defaultsна любое другое имя , как abcи она будет иметь такое же поведение