2012-05-25 4 views
2

내가 가지고있는 하나 개의 모델이보기 모듈가 초기화 model :backbonejs : 컬렉션은

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

입니다입니다? 이 문제를 어떻게 해결할 수 있습니까?

+0

당신이 http://stackoverflow.com/questions/10611977/backbone-js-not-rendering 전에 반드시 숙지했던 것과 같은 동작을합니다 – Deeptechtons

답변

4

idAttribute의 모델은 id입니다. defaultsid을 정의하고 있기 때문에 동일한 모델을 항상 만들 것입니다. 복제 모델이 만들어지면 백본 오류가 발생하므로 조용하게 모델을 볼 수 있습니다.

+0

이것은'defaults'를'default'로 바꿀 때 왜 제대로 작동하는지 설명합니다. – fguillen

0

고객님의 문제는 localdata에있는 물건과 관련이 있다고 생각합니다. 당신의 localdata에서
얼마나 많은 개체가 다른 id 필드
중 하나 당신은 당신의 localdata 배열의 모든 객체에 대한 서로 다른 ID를 제공하거나 defaults에서 이름을 변경할 때마다 바로 모델 LayerModel

defaults에서 id 필드를 제거한다 default으로 변경해야합니다. 기본 ID가 없기 때문에 백본은 새 모델로 가져 와서 컬렉션에 추가합니다.

그래서 당신은 abc 같은 다른 이름으로 defaults을 변경할 수 있으며