2016-09-14 4 views
1
백본 (1.2.3)와

를 사용하여 정의되지 않은 재산 '유형'을 읽을 수 없습니다 오류 발생 :는 백본 컬렉션, 나는 컬렉션의 <a href="http://backbonejs.org/#Collection-model" rel="nofollow noreferrer"><code>model</code> property</a>를 사용하여 여러 모델을 사용하여 컬렉션을 구축하기 위해 노력하고있어 다른 모델

TypeError: Cannot read property 'type' of undefined(…) 

사실, modelId() 두 번이라고하고 두 번째 시간, attrsundefined입니다.

추신 : 나는 이것의 복제본이라는 것을 잘 알고 있습니다 : Backbone Collection with multiple models?하지만 거기에는 도움이되는 것이 없습니다.

+0

백본을 최신 버전으로 업그레이드 할 수 있습니까? 제 생각에'model' 함수에 대한 인수는 new-ish이므로 1.2.3에서는 지원되지 않을 수도 있습니다. –

+0

그 코드는 백본 1.2.3에서 잘 작동합니다 - https://jsfiddle.net/adeo857x/ – mikeapr4

답변

0

modelId은 1.2.3에서 지원됩니다. 그 시점에서

var id = this.modelId(this._isModel(obj) ? obj.attributes : obj); 

obj{type: 'type-a', id: 1}, 그대로 modelId 전송된다

처음 modelId은 라인 969에서 수집 get 함수의 호출된다.

modelId가 호출되어 두 번째로, 그것은 라인 1126에서 수집 _addReference 함수이다 :

var id = this.modelId(model.attributes); 

그것은 그 시점에서, model하지 백본 모델임을 의미하고 model.attributes를 정의되지 .

BackboneModelA 코드가 없으면 더 이상 도움을 드릴 수 없지만 조사한 후 Backbone.Model으로 확장해야합니다.

+0

사실,'BackboneModelA'는'Backbone.RelationalModel'을 확장합니다. 그게 작동하지 않는 이유라고 생각하니? – Menencia

+0

@Menencia이 상자에서는 'Backbone.RelationalModel'이 작동합니다. 'modelId' 함수에 중단 점을 넣고'model.attributes' 해시가 있는지 스택 추적 검사를 탐색해야합니다. –