Backbone.Collection에서 저장할 수 없는 하나 이상의 모델 문제 해결
6111 단어 Backbone.jsJavaScript
문제에 관하여 Collection
에 저장된Model
의attributes
또는 서버의 응답에 대상 구조를 가진 id 속성이 있는지 여부.
있다면 십중팔구 그게 이유겠지.
여기서 중요한 것은 대상 구조를 가진 속성의 명칭이 id라는 것이다.
대상 구조의 id 속성을 가진 대상{
id: {
shopId : 'hogeShop',
humanId: 'TaroYamada'
}
}
setメソッド
또는 addメソッド
에서 이러한 구조를 가진 대상을 여러 개Collection
로 압축하더라도 Collection
에 하나만 저장Model
한다.
문제가 발생한 코드var attrs = [
{ id: { shopId : 'hogeShop', humanId: 'TaroYamada' } },
{ id: { shopId : 'hogeShop', humanId: 'JiroTanaka' } }
];
new Backbone.Collection(attrs);
실행 결과(Google Chrome for Windows 40.0.2214.11m)
그룹의 첫 번째만 Model
로 저장합니다.
조사가 아직 끝나지 않았다 Collection.set
주변 코드를 조사한 후Collection
에 Model
를 채우는 과정에서 단축된 역사 기록을 변수에 저장할 때Model.id
를 사용했다.
기본값Model.id
은 Model.attributes.id
입니다.
이때 Model.id
의 값이 대상 구조가 되면 Collection
에서 기대하는 동작을 할 수 없다.
주위의 행동을 자세히 읽지 못해서 죄송합니다.
만약 이 부분을 아는 사람이 있다면 평론에서 교수해 주십시오.
대응법 Collection.set
에서 비 대상 구조의 값을 지정하면 되기 때문에 모든 Backbone 대상이 자동으로 생성된Model.id
을 지정하여 문제를 피하는 것이 좋다.cid
임의의 문자열을 통해 Model.idAttribute
의 어떤 값을 Model.attributes
로 지정할 수 있습니다.
문제 없는 코드var attrs = [
{ id: { shopId : 'hogeShop', humanId: 'TaroYamada' } },
{ id: { shopId : 'hogeShop', humanId: 'JiroTanaka' } }
];
new Backbone.Collection(attrs, { model: Backbone.Model.extend({ idAttribute: 'cid' }) });
실행 결과(내용을 확인하기 위해 변수로 추출)
이번엔 잘했어.잘 됐다.
실제 인코딩이 이렇게 될 것 같아서요.
collection.jsvar Collection = Backbone.collection.extend({
model: Backbone.Model.extend({ idAttribute: 'cid' });
});
var collection = new Collection(attrs);
만약 토로한 부분, 잘못된 인식이 있다면 반드시 지적해 주십시오.
Reference
이 문제에 관하여(Backbone.Collection에서 저장할 수 없는 하나 이상의 모델 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/TomoyaShibata/items/fcd8d7456773852b9cce
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
{
id: {
shopId : 'hogeShop',
humanId: 'TaroYamada'
}
}
var attrs = [
{ id: { shopId : 'hogeShop', humanId: 'TaroYamada' } },
{ id: { shopId : 'hogeShop', humanId: 'JiroTanaka' } }
];
new Backbone.Collection(attrs);
Collection.set
주변 코드를 조사한 후Collection
에 Model
를 채우는 과정에서 단축된 역사 기록을 변수에 저장할 때Model.id
를 사용했다.기본값
Model.id
은 Model.attributes.id
입니다.이때
Model.id
의 값이 대상 구조가 되면 Collection
에서 기대하는 동작을 할 수 없다.주위의 행동을 자세히 읽지 못해서 죄송합니다.
만약 이 부분을 아는 사람이 있다면 평론에서 교수해 주십시오.
대응법 Collection.set
에서 비 대상 구조의 값을 지정하면 되기 때문에 모든 Backbone 대상이 자동으로 생성된Model.id
을 지정하여 문제를 피하는 것이 좋다.cid
임의의 문자열을 통해 Model.idAttribute
의 어떤 값을 Model.attributes
로 지정할 수 있습니다.
문제 없는 코드var attrs = [
{ id: { shopId : 'hogeShop', humanId: 'TaroYamada' } },
{ id: { shopId : 'hogeShop', humanId: 'JiroTanaka' } }
];
new Backbone.Collection(attrs, { model: Backbone.Model.extend({ idAttribute: 'cid' }) });
실행 결과(내용을 확인하기 위해 변수로 추출)
이번엔 잘했어.잘 됐다.
실제 인코딩이 이렇게 될 것 같아서요.
collection.jsvar Collection = Backbone.collection.extend({
model: Backbone.Model.extend({ idAttribute: 'cid' });
});
var collection = new Collection(attrs);
만약 토로한 부분, 잘못된 인식이 있다면 반드시 지적해 주십시오.
Reference
이 문제에 관하여(Backbone.Collection에서 저장할 수 없는 하나 이상의 모델 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/TomoyaShibata/items/fcd8d7456773852b9cce
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var attrs = [
{ id: { shopId : 'hogeShop', humanId: 'TaroYamada' } },
{ id: { shopId : 'hogeShop', humanId: 'JiroTanaka' } }
];
new Backbone.Collection(attrs, { model: Backbone.Model.extend({ idAttribute: 'cid' }) });
var Collection = Backbone.collection.extend({
model: Backbone.Model.extend({ idAttribute: 'cid' });
});
var collection = new Collection(attrs);
Reference
이 문제에 관하여(Backbone.Collection에서 저장할 수 없는 하나 이상의 모델 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TomoyaShibata/items/fcd8d7456773852b9cce텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)