2014-09-09 4 views
2

화학 물질 목록을 여러 개 저장할 수있는 모델이있는 경우가 있습니다. 화학 모델은 hasMany 관계 각각에 대해 동일합니다.동일한 모델을 사용하여 여러 개의 hasMany 관계를 가질 수 있습니까?

나는 이런 식으로 뭔가가 필요합니다

Ext.define('HandSurvey.model.ChemicalRisks', { 
    extend: 'Ext.data.Model', 
    requires: ['Ext.data.identifier.Uuid'], 
    config: { 
     idProperty: 'id', 
     identifier: 'uuid', 
     fields: [ 
      { name: 'id', type: 'auto' } 
     ], 
     associations: [ 
      { 
       type: 'hasMany', 
       model : 'HandSurvey.model.SpecificChemical', 
       name : 'fiberglassResins', 
       store : { 
        type: 'sql' 
       } 
      }, 
      { 
       type: 'hasMany', 
       model : 'HandSurvey.model.SpecificChemical', 
       name : 'paintsStains', 
       store : { 
        type: 'sql' 
       } 
      }, 
     ], 
     proxy: { 
      type: 'sql' 
     } 
    } 
}); 

을하지만 각 목록은 ChemicalRisks 모델에 속하는 모든 SpecificChemical에 바인딩하는 원인이 아닌 사람은 hasMany에 속하는 것을 의미했다. 마치 여러 필드에 가입해야하는 것처럼 보입니다.

가능합니까? 아니면 다른 이름으로 정확히 같은 모델/상점을 만들어야합니까?

답변

2

할 수 있습니다.

사용 associationKey이 같은 응답을 감안할 협회

associations: [ 
      { 
       type: 'hasMany', 
       model : 'HandSurvey.model.SpecificChemical', 
       name : 'fiberglassResins', 
       associationKey : 'fiberglassResins' 
      }, 
      { 
       type: 'hasMany', 
       model : 'HandSurvey.model.SpecificChemical', 
       name : 'paintsStains', 
       associationKey : 'paintsStains' 
      }, 
     ] 

의 자동 생성 저장 : {

"response" : { 
     "fiberglassResins": [ 
      { 
       "id" : 1 
       "name" : "Polyester" 

      }, 
      { 
       "id" : 2 
       "name" : "E-Glass" 
      } 

     ], 
     "paintsStains": [ 
      { 
       "id" : 1 
       "name" : "item1" 

      }, 
      { 
       "id" : 2 
       "name" : "item2" 
      } 

     ] 
    } 
} 

그런 다음 바인딩 메인 모델 상점에가 ItemsStore을 말할 수 . 중요 : ItemsStore의 각 레코드는 Sencha에서 자동 생성됩니다 : fiberglassResinsStore 및 paintsStainsStore.

실제로 console.log()를 통해 실제 매장을 볼 수 있습니다.