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