是否可以在ExtJS中从远程json对象创建组件

时间:2011-09-08 06:26:31

标签: javascript json extjs

现在我用

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

创建extjs组件。

是否可以在ExtJS中创建远程json对象的组件,如下所示:

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

然后我可以在viewport.js中编写viewport config json对象。

1 个答案:

答案 0 :(得分:0)

框架中没有内置任何内容。 ComponentLoader包含组件渲染器,但用于渲染容器内的组件,而不是设置组件。

你可以做的是构造函数方法中的第一件事,触发同步AJAX请求以获取配置对象,然后将其应用于config参数:

...
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请求回来。当然,您需要进行错误处理。如果希望config对象是主要的,则可以使用Ext.applyIf,如果密钥在config对象中没有匹配,则应用json对象。如果你想在匹配的情况下明确覆盖,请使用Ext.apply。