2012-06-28 2 views
2

사이 나는이 방법으로 모델 작업을하고 싶습니다 :백본 관계형 두 가지 모델 <a href="https://github.com/PaulUithol/Backbone-relational" rel="nofollow">Backbone-relational</a>을 사용하여

task = { 
    id: 1 
    assigned_id: 2 
    name: 'read a book', 
    user: userModel 
}; 

나는이 방법 (1)을 시도했지만 결과는 다음과 같다 (2).

아이디어가 있으십니까?


(1)

var User = Backbone.RelationalModel.extend({ 
    // urlRoot 
}); 

var Task = Backbone.RelationalModel.extend({ 
     relations: [ 
      { 
       type: Backbone.HasOne, 
       key: 'user', 
       relatedModel: User 
      } 
     ], 

     // urlRoot 
}); 

(2)

task = { 
    id: 1 
    assigned_id: 2 
    name: 'read a book', 
    user: null // null instead of having something related to user model 
}; 

답변

2

당신의 정확한 JSON이 당신의 작업 모델, 그래서 내가 여기 추측하고있어 무엇 확실하지.

백본 관계형는 완벽하게 중첩 된 모델 중 하나를 기대하고있다 :

task = { 
    id: 1 
    assigned_id: 2 
    name: 'read a book', 
    user: { 
       name: 'Fred Rogers', 
       id: 42, 
       occupation: 'Hero' 
      } 
}; 

하거나 관련 모델의 ID로 가정합니다 문자열/숫자 : 나는 '

task = { 
    id: 1 
    assigned_id: 2 
    name: 'read a book', 
    user: 42 
}; 

당신이 사용자 모델을 위해 얻고있는 null 가치에 기초하여 두 번째 케이스를 치고 있다고 생각합니다.

백본 관계형이 모델의 인스턴스를 인스턴스화하고 관련 모델이 "키"문자열/숫자 인 경우 모델의 내부 저장소를 검색하여 일치하는 모델을 찾습니다. 발견되면 해당 모델을 사용자 특성 값으로 설정합니다.

모델을 찾을 수없는 경우 모델의 관련 관계 속성 model._relations[n].keyContents에서 키를 숨기고 사용자 값을 null으로 설정합니다.

fetchRelated 함수를 사용하면 데이터 저장소/API에서 관련 모델을 얻을 수 있습니다.

그래서, 관련 사용자 모델 얻을 task.fetchRelated()를 호출하려고 :

task.fetchRelated('user');