2011-09-08 15 views
0
創建遠程JSON對象組件

現在我用是否有可能在ExtJS的

Ext.create('Ext.Viewport',{...}); 

創建ExtJS的組件。

是否有可能在ExtJS的創建遠程JSON對象組件這樣的:

Ext.create('Ext.Viewport','http://blabla/viewport.js'); 

然後我可以寫在viewport.js視配置JSON對象。

回答

0

沒有內置到框架中。 ComponentLoader帶有組件渲染器,但用於渲染容器內的組件,而不是設置組件。

你可以做的是第一件事情在你的構造方法,把火關同步AJAX請求來獲得配置對象,然後將其應用到配置參數:

... 
constructor: function(config) { 
    var me = this; 

    Ext.Ajax.request({ 
     url  : 'something.php', 
     async : false, 
     params : { 
      componentId : 'something' 
     }, 
     callback : function(opts, success, response) { 
      var json = response.responseJSON; 
      // or var json = Ext.decode(response.responseText, true); 

      Ext.applyIf(config, json); //or Ext.apply(config, json); 
     } 
    }); 

    me.callParent(arguments); 
}, 
.... 

技術上這應該停止一切直到AJAX請求返回。當然,你需要錯誤處理。你可以使用Ext.applyIf如果你想讓config Object成爲主對象,並且如果這個關鍵字在配置對象中沒有匹配的話就應用json對象。 Ext.apply如果你想明白覆蓋是否有匹配。