2017-12-11 4 views
0

서버에서 JSON 데이터를 수신 할 수있는 모델 및 저장소 설정이 있습니다. 서버가 Enum Set 인 필드를 보내고 있습니다. 내 모델은 해당 필드를 배열로받습니다. 그리드의 확인란으로 각 가능한 열거 형 값에 대한 열이있는 그리드가 있고 그 열에 열거 형이 설정되었는지 여부를 표시하도록합니다. 사용자가 체크 박스를 업데이트하면 레코드를 업데이트해야합니다.단일 모델 배열 필드의 ExtJS Grid 체크 박스

ExtJS 6에서 적절한 방법은 무엇입니까? 계산 및 변환을 살펴 봤지만 데이터 표시에 도움이되는 것처럼 보입니다. 레코드 업데이트에 도움이되는 것처럼 보이지 않습니다.

Ext.define('App.Model', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'enumSet', type: 'auto'}, //[A,B,C] 
    ], 
}); 

Ext.define('App.Grid', { 
    extend: 'Ext.grid.Panel', 

    columnConfig: function() { 
     return [ 
      {text: 'A', xtype: 'checkcolumn', dataIndex: 'enumSet'}, 
      {text: 'B', xtype: 'checkcolumn', dataIndex: 'enumSet'}, 
      {text: 'C', xtype: 'checkcolumn', dataIndex: 'enumSet'}, 
     ]; 
    }, 
}); 

답변

0

당신은 무엇을 검색하면 serialize 방법이다, 그런 것 같아요 :

Ext.define('App.Model', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'enumSet', type: 'auto', serialize: function(v, rec) {var arr = []; if(rec.get('A')) arr.push('A'); if(rec.get('B')) arr.push('B'); if(rec.get('C')) arr.push('C'); return arr; }}, 
     {name: 'A', convert: function(v, rec) {if(v!==undefined) return v; return rec.get("enumSet").indexOf('A')>-1}, 
     {name: 'B', convert: function(v, rec) {if(v!==undefined) return v; return rec.get("enumSet").indexOf('B')>-1}, 
     {name: 'C', convert: function(v, rec) {if(v!==undefined) return v; return rec.get("enumSet").indexOf('C')>-1} 
    ], 
});