참고 : 저자는 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 학습 곡선을 개선하는 방법에 대해 조언 해주십시오. 감사합니다
내 모델에 문제가 있습니까? 내 새 동적 MVC 디자인 패턴을 설명하기 위해 간단한 모델 사양 만 있습니다. –