Можно ли создать компонент из удаленного объекта JSON в ExtJS - PullRequest
0 голосов
/ 08 сентября 2011

Теперь я использую

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

для создания компонентов extjs.

Возможно ли создать компонент из удаленного объекта json в ExtJS следующим образом:

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

тогда я могу записать объект json конфигурации viewport в viewport.js.

1 Ответ

0 голосов
/ 08 сентября 2011

Ничего не встроено в рамки. Существует 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, если хотите, чтобы объект конфигурации был основным, а объект json будет применяться, если ключ не имеет совпадения в объекте конфигурации. Ext.apply, если вы хотите просто перезаписать, если есть совпадения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...