Передача конфигурации в прототипы ExtJS - PullRequest
0 голосов
/ 24 мая 2011

Я пытаюсь выяснить, как 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 Ответ

5 голосов
/ 24 мая 2011

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

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

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

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

var awesome = Ext.create('My.awesome.Class',{name:'New Awesome'});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...