2011-09-08 50 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如果你想明白覆盖是否有匹配。