Передача конфигурации в прототипы ExtJS

#config #extjs4

#конфигурация #extjs4

Вопрос:

Я пытаюсь выяснить, как ExtJS4 передает объекты конфигурации. Я хочу сделать эквивалент…

 store  = function(config){
    if ( typeof config.call !== 'unndefined' ){
        config.url = "server.php?c="   config.call || config.url;       
    };  
    Sketch.Data.AutoSaveStore.superclass.constructor.call(this,config);
};
Ext.extend(store, Ext.data.Store{})    
  

Возможно, я упускаю здесь что-то очевидное, но, покопавшись в файле изолированной среды, я пришел к следующему….

  Ext.define('My.awesome.Class', {
     // what i would like to pass.
     config:{},
     constructor: function(config) {
         this.initConfig(config);
         return this;
     }
 });
  

который, похоже, не работает, если вы делаете что-то вроде…

 var awesome = Ext.create('My.awesome.Class',{
    name="Super awesome"
});  
alert(awesome.getName()); // 'awesome.getName is not a function'
  

Однако

   Ext.define('My.awesome.Class', {
     // The default config
     config: {
         name: 'Awesome',
         isAwesome: true
     },
     constructor: function(config) {
         this.initConfig(config);
         return this;
     }
 });

var awesome = Ext.create('My.awesome.Class',{
    name="Super awesome"
});  
alert(awesome.getName()); // 'Super Awesome'
  

Это задевает меня за живое при попытке создать сложные расширения хранилища.
У кого-нибудь есть идеи, как я передаю кучу случайных параметров прототипу?

Ответ №1:

Вы не должны использовать оператор new для создания нового экземпляра в вашем классе. В ExtJS4 вы должны использовать Ext.create() метод.

Попробуйте выполнить:

 var awesome = Ext.create('My.awesome.Class');
alert(awesome.getName());
  

И если вы хотите передать какой-либо параметр при создании экземпляра, вы можете сделать следующее

 var awesome = Ext.create('My.awesome.Class',{name:'New Awesome'});
  

Комментарии:

1. Действительно. дело скорее в том, что я попытался получить переменную, которую я не объявлял заранее, что я раньше мог сделать. Например, объявление config:{} в определении приводит к появлению ошибки js «awesome.getName не является функцией»

2. Я не думаю, что вы можете динамически создавать методы config и setter / getter.

3. использование указанных методов в качестве примера было ошибкой, и поскольку я не собираюсь использовать указанные методы и на самом деле просто хочу, чтобы объекты конфигурации, которые я передаю в области видимости, это в основном отвечает за меня. Спасибо.