2011-09-20 4 views
1

참고 : 저자는 EXT JS에 새로운 및동적 모델, 상점, 및 뷰 - 가장 좋은 방법

내가 누구의 데이터 모델 고정되지 않은 웹 서비스를 상상 자신의 프로젝트에서 MVC를 사용하기 위해 노력하고있다. 동적으로 생성 된 모델을 만들고 싶습니다. 동적 모델을 사용하여 상점에서 데이터를 동적으로 생성하는 동적 구성 요소를 동적으로 생성합니다. 이 모델의 정의에서

 
Ext.define('MNESIA.model.User', { 
    extend: 'Ext.data.Model' 
}); 

는, 내가 설정 객체의 'fields' 매개 변수를 떠난 :

는 모델의 샘플 클래스 정의를 확인하여 시작할 수 있습니다. 이것은 whateverever 내가 위의 유형의 모델 인스턴스를 생성하기 때문에, 나는 동적으로 필드 정의를주고 싶다. 다른 말로하면이 모델의 많은 인스턴스를 가질 수 있지만, 모두 'fields' 매개 변수의 다른 정의를 가지고 있기 때문이다.

는 여기에서 나는이 같은 가게의 정의를 작성 :이

 
Ext.define('MNESIA.store.Users', { 
    extend: 'Ext.data.Store', 
    autoLoad: true 
    } 
}); 

, 내가 가게 정의가 있습니다. 나는이 클래스의 모든 인스턴스에 동적으로 첨부하기 때문에 'model' 매개 변수를 생략했습니다. 사실, 심지어 'data''proxy' 설정은 내가이 가게의 인스턴스를 생성하는 동안 그들을 asign 싶으면 언급되지 않습니다.

동적 인 뷰에 의해 동적 인 뷰를 원합니다. 'columns', 'store''title' : 내가 그리드

 
Ext.define('MNESIA.view.Grid' , { 
    extend: 'Ext.grid.Panel', 
    alias : 'widget.mygrid', 
    width: 700, 
    height: 500 
}); 

의 정의가 여기 아래 내가 그리드 사양에서 다음 매개 변수를 떠났다. 이것은 동적 저장소, 제목 및 열 정의를 가지고 있지만 위의 사양 인스턴스로 많은 그리드를 만들 예정이기 때문입니다.

 
    function() { 
     var SomeBigConfig = connect2Server(); 
     /* 
     where: 
      SomeBigConfig = [   
           {"model":[ 
            {"fields": 
             ["SurName","FirstName","OtherName"] 
            } 
           ] 
           },       
           {"store":[ 
            {"data": 
             {"items":[ 
              {"SurName":"Muzaaya","FirstName":"Joshua","OtherName":"Nsubuga"}, 
              {"SurName":"Zziwa","FirstName":"Shamusudeen","OtherName":"Haji"}, 
              ... 
              ] 
             }        
            }, 
            {"proxy": { 
             "type": "memory",         
             "reader": { 
              "type": "json", 
              "root": "items" 
             } 
             } 
            }        
           ] 
           },       
           {"grid",[ 
              {"title":"Some Dynamic Title From Web Service"}, 
              {"columns": [{ 
               "header": "SurName", 
               "dataIndex": "SurName", 
               "flex": 1 
              },{ 
               "header": "FirstName", 
               "dataIndex": "FirstName", 
               "flex": 1 
              }, 
              { 
               "header": "OtherName", 
               "dataIndex": "OtherName", 
               "flex": 1 
              } 
              ]}       
             ] 
            } 
          ] 

     */ 
     var TheModel = Ext.create('MNESIA.model.User',{ 
         fields: SomeBigConfig[0].model[0].fields 
       }); 
     var TheStore = Ext.create('MNESIA.store.Users',{ 
         storeId: 'users', 
         model: TheModel, 
         data: SomeBigConfig[1].store[0].data, 
         proxy: SomeBigConfig[1].store[1].proxy 
       }); 
     var grid = Ext.create('MNESIA.view.Grid',{   
         store: TheStore, 
         title: SomeBigConfig[2].grid[0].title, 
         columns: SomeBigConfig[2].grid[1].columns      
       }); 

     // From here i draw the grid anywhere on the, page say by 

     grid.renderTo = Ext.getBody(); 
     // end function 
     } 

지금 다음 모델, 상점, 다음 그리드의 동적 만들기 이런 종류의 메모리 낭비에 결과 않기 때문에이 것 :

내 컨트롤러 일부 경우, 나는 다음과 같이 나타납니다 일부 코드가 해당 구성 요소를 파괴하려고 할 때마다 각 구성 요소의 destroy 메소드를 호출해야합니다.

질문 :

QN 1 :은 EXT JS의 MVC 구현 4 허가증이합니까?

Qn 2 : 새 클래스의 xtypes을 사용하면 어떻게 동일한 기능을 얻을 수 있습니까? 예를 들어 말 :

 
    { 
    xtype: 'mygrid', 
    store: TheStore, 
    title: SomeBigConfig[2].grid[0].title, 
    columns: SomeBigConfig[2].grid[1].columns 
    } 

QN 3 : 정말 작동하고 실용적으로 올바른이다 위에 내가 쓴 것, 나는 그들의 CONFIGS가 전송된다 패널,상에서 tabpanels, 나무 (같은 모든 구성 요소에이를 적용 할 수있는 경우 원격 서버에 의해)?

Qn 4 : 제어기 A와 B가 있고 컨트롤러 A가보기 [C, D] 및 제어기 B가보기 : [E, F]의 사양을 갖는 경우, 생성 된 동작이 올바른지 보기 : E는 컨트롤러 A가 처리합니까? 즉, 컨트롤러가 뷰의 설정에 등록되지 않은 뷰의 동작을 처리 할 수 ​​있습니까?

참고 : Ext JS는 처음 사용했지만 자세히 배우고 싶습니다. 내 EXT JS 학습 곡선을 개선하는 방법에 대해 조언 해주십시오. 감사합니다

답변

1

필자의 선택에 따라, 모델 번호는

 
{"model":[{"fields":[{name:'name',type:'string'}, 
      {name:'id',type:'string'}]}]}
과 같이 모델 파트를 구현하는 경우와 같이보기에 렌더링 할 저장소에 매핑해야합니다.이 경우 뷰 렌더링을 위해 저장소에 쉽게 매핑됩니다. .

+0

내 모델에 문제가 있습니까? 내 새 동적 MVC 디자인 패턴을 설명하기 위해 간단한 모델 사양 만 있습니다. –

관련 문제