2014-12-29 10 views
2

서버에서 검색 한 모든 필드를 포함하는 모델을 만들기 위해 데이터 저장소를 만드는 방법이 있습니까? 내부 필드를 config (설정) 할 수있는 방법이 있나요Extjs 4.2.1 - 데이터 저장소가 서버의 모든 필드로드

var myStore = Ext.create('Ext.data.Store', { 
proxy: { 
    type: 'ajax', 
    url: '...', 
    reader: { 
     type: 'json', 
     root: 'users' 
    } 
}, 
fields :[name, phone], 
autoLoad: true 
}); 

:

User : { 
    name: "...", 
    phone: "...", 
    Address: { 
     street: "...", 
     country: "...", 
    }, 
    ... 
    ... 
} 

그리고 우리는이 사용자를로드하기 위해 다음 저장소를 사용 :

우리가 서버 측에서 객체가 있다고 가정하자 예제 (이름, 전화)와 같은 특정 매핑없이 사용자의 모든 필드를 검색하는 데이터 저장소? 내 말은, ** 필드에이라는 ** 속성을 데이터 저장소에 말하고, 검색된 모든 필드를 매핑하며, 결과는 사용자 이름, 전화 번호 및 주소가있는 저장소가 될 것입니까?

감사합니다.

답변

2

네 당신에게

var fields = []; 


    Ext.each(me.dataFromServer, function (record) { 
     fields.push({ 
      name: record.fieldName 
     }); 

     }); 

    var myModel = Ext.define('myModelName',{ 
     extend: 'Ext.data.Model', 
     idProperty: 'id', //some field 
     fields: fields 
    }); 

도움이 될 것입니다 적절한 코드 snipet이 가능하며 우리 가게 initComponent가에 위치한이

me.store = Ext.create('yourStore',{ 
     model: myModel 
    }); 

및 thic 코드를 다음과 같습니다

귀하 판매점 :

extend: 'Ext.data.Store', 
//model: null, 

모델 없음. Ext.each (me.dataFromServer, 기능 (기록) { fields.push ({ 이름 :; record.fieldName })})

+0

은 어디에서이 코드를 삽입한다 – yanivsh

+0

귀하의 initComponent에있는 모든 것 : function() { \t \t var me = this; 전에 까지 me.callParent(); – Tato

+1

좋은 생각. 저장소의 모든 레코드에는 서버에서 해당 레코드의 전체 데이터를 보유하는 ** 원시 ** 속성이 있다는 것을 알았습니다. 결국이 속성을 사용했습니다. 어쨌든 남자 고마워. – yanivsh