2011-12-18 2 views
0

지저분한 자바 스크립트를 정리하기 위해 백톤 솔루션을 결합하려고하면 고통스러운 시도가됩니다. 확실하게 나는 뭔가 잘못하고 있지만 어떤 해결책도 찾을 수 없다. 데이터에는 다음 특성 (이름, 설명)이있는 중첩 모델 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 응답에서 중첩 된 모델을 채울 수있는 방법이 있습니까? 각각의 중첩 모델을 자체 뷰로 조작 할 수 있습니까?

답변

0
initialize: function(attributes) { 
    this.fetchRelated("Packs"); 
    } 

는 또한, relatedModel '팩'과 컬렉션에 관련한 모델 사이의 불일치가있을 것 같습니다 : 그것은 여전히 ​​작동하지 않으면, 당신의 이름 당신의 키를주는 시도가 팩

그 collectionType과 같지 않습니까?

+1

fetchRelated는 제안 사항을 모두 포함하여 서버에 요청하지 않습니다. 사실 부모 json 전체 트리 구조로 인해 컬렉션에 액세스 할 수 있습니다. 다른 제안? – Alpha