지저분한 자바 스크립트를 정리하기 위해 백톤 솔루션을 결합하려고하면 고통스러운 시도가됩니다. 확실하게 나는 뭔가 잘못하고 있지만 어떤 해결책도 찾을 수 없다. 데이터에는 다음 특성 (이름, 설명)이있는 중첩 모델 CarsType이있는 많은 차고가 포함되어 있습니다. 각 carType은 차고 당 한 번 사용되지만 많은 차고에서 찾을 수 있습니다. carType은 차고 당 임의로 정렬됩니다 그래서 관계 테이블 car_type/garage 이름 팩은이 방법으로 정의됩니다. | 이드 | garage_id | car_type_id | 위치 |backbone-relational FetchRelated가 아무 것도 가져 오지 않습니다
각 carType은 다양한 기법에 할당됩니다. 각 기계공은 많은 차고에서 일할 수 있습니다. 그래서 세 번째 중첩 수준은 관계 테이블 mechanic_pack | mechanic_id | pack_id |
백엔드는 Json을 뱉어내는 레일 3.1입니다.
Garage = Backbone.RelationalModel.extend({
relations: [
{
type: Backbone.HasMany,
key: 'Packs',
relatedModel: 'pack',
collectionType: 'Packs',
reverseRelation: {
key: 'garage',
includeInJSON: 'id'
}
}
],
initialize: function(attributes) {
this.fetchRelated("packs");
},
url : function() {
var base = 'garages';
if (this.isNew()) return base;
return base + (base.charAt(base.length - 1) == '/' ? '' : '/') + this.id;
}
///... more method ...
});
팩 컬렉션은
Packs= Backbone.Collection.extend({
model: Pack,
url: '/packs/list/:garage_id'
});
모델이 제대로로드되는하지만 fetchRelated은 가져 오지 않고 오류가 발생하지 않는 다른 파일에 정의되어 있습니다. Firebugs에서 브레이크 포인트는 toFetch는 항상 내가 fetchRelated를 호출하는 방법을
fetchRelated: function(key, options) {
options || (options = {});
var rel = this.getRelation(key),
keyContents = rel && rel.keyContents,
toFetch = keyContents && _.select(_.isArray(keyContents) ? keyContents : [ keyContents ], function(item) {
var id = _.isString(item) || _.isNumber(item) ? item : item[ rel.relatedModel.prototype.idAttribute ];
return id && !Backbone.Relational.store.find(rel.relatedModel, id);
}, this);
if (toFetch && toFetch.length) {
......
를 정의되지 않은 것을 보여줍니다?
두 번째 질문 : 차고가 요청되면 레일스는 중첩 된 모델의 전체 트리를 보냅니다. 초기 json 응답에서 중첩 된 모델을 채울 수있는 방법이 있습니까? 각각의 중첩 모델을 자체 뷰로 조작 할 수 있습니까?
fetchRelated는 제안 사항을 모두 포함하여 서버에 요청하지 않습니다. 사실 부모 json 전체 트리 구조로 인해 컬렉션에 액세스 할 수 있습니다. 다른 제안? – Alpha