2011-11-25 2 views
0

데이터 저장소/프록시 (직접 형을 사용하고 있음)를 통해 Ext JS 4의 그리드에 데이터를로드 할 때 '로딩'메시지 또는 마스크를 만드는 방법에 대한 많은 참조를 발견했습니다. (나는 이전에 로딩 메시지를받지 않았기 때문에) Ext JS 4 직판 저장 마스크를 방지하는 방법?

그래서 내가 한 지점에서 내 컨트롤러에서 이것을 추가했다 : 그러나,

init: function() { 
var store = this.getEncountersStore(); 
store.on({ 
     beforeload: function(store,operation,eopts) { 
      Ext.getBody().mask('Loading...'); 
        }, 
        load: function(store,records,success,operation,eopts) { 
          Ext.getBody().unmask();    
         } 
       }); 

    } 

내 MVC 응용 프로그램에서 나를 위해 작동하는 것 같다, 다음으로 추가 내가 화면에 두 개의 '로드'마스크 메시지가 지금 있었다 것으로 나타났습니다

this.runningTask = Ext.TaskManager.start ({ 
       run: this.loadEncounterData, 
       interval: 10000, 
       scope: this 
      }); 

loadEncounterData: function() { 
       var store = this.getEncountersStore(); 
       store.load({ 
        params: { 
        }, 
        callback: function(r,options,success) { 
         if(success == true)  
         ... 

        } //callback 
       }); //store.load 

: 작업 관리자 타이머가 자동으로 그리드 데이터를 10 초마다 새로 고침!

그래서 위의 'store.on'코드 블록을 내 컨트롤러 초기화에서 제거 했으므로 하나의 메시지 만 남았습니다.

다른 메시지의 출처는 어디입니까? 나는 그것이 작동하도록, 또는 방법을 수행하는 방법을 알아낼 수 없습니다 불구하고

, 그것이 내가 같은 질문에 보이는 page을 발견 그리드?

Ext.define('ESDB.view.encounter.List', { 
extend: 'Ext.grid.Panel', 
... 

의 일부입니다 그것은 ExtJS 4/MVC에 따른 것입니다.

답변

1

로드 마스크는 gridView의 일부입니다.

http://docs.sencha.com/ext-js/4-0/#!/api/Ext.grid.View-cfg-loadMask

GridPanel 구성 요소는 모두 패널에서 테이블보기 함께 할 수있는 다양한 일을 정의하는 GRIDVIEW 구성 요소를 가지고있다.

은 거짓, IE에 loadMask에 대한 설정을 설정, 그리드에 loadMask을 방지하기위한 방법은 다음과 같습니다

Ext.define('ESDB.view.encounter.List', { 
    extend: 'Ext.grid.Panel', 
    loadMask : false, 
    ... 
4

loadMask 그리드 패널에서 설정되지 않습니다. 당신은 gridpanel

viewConfig : { 
    loadMask: false 
} 
0

그냥 가게로드 부하의 기능을 변경할 수있는 설정으로 추가 할 수 있습니다

loadEncounterData: function() { 
    var store = this.getEncountersStore(); 
    store.load(); 
    ... 

는 그런 다음 자동으로 loadMask을 처리하기 위해 다음과 같은 방법을 사용할 수를 할 때마다 격자 저장 부하. Ext.util.DelayedTask를 사용하면로드가 500ms 미만이면 loadMask가 나타나지 않습니다.

Ext.define('ESDB.view.encounter.List', { 
    extend: 'Ext.grid.Panel', 
    ... 

    initComponent: function() { 
     var me = this; 

     me._mask = new Ext.LoadMask(me, {msg: 'Loading...'}); 
     me._maskd = new Ext.util.DelayedTask(function() { 
      me._mask.show(); 
     }); 
     me.store = Ext.create('Ext.data.Store', { 
      ... 
      listeners: { 
       beforeload: function() { 
        me._maskd.delay(500); 
        ... 
       }, 
       load: function() { 
        me._maskd.cancel(); 
        me._mask.hide(); 
        ... 
       } 
      } 
     }); 
     ...