Я играю с Сенчей и создал список с магазином и моделью:
главный:
Ext.Loader.setConfig({enabled: true});
Ext.application({
viewport: {
autoMaximize: false
},
name: 'Sencha',
launch: function() {
Ext.create('Ext.List', {
fullscreen: true,
store: Ext.create('store.Test', {
}),
itemTpl: '{lastName}, {firstName} Age: {age}'
});
}
});
магазин
Ext.define('store.Test', {
extend: 'Ext.data.Store',
model: 'model.User',
data: [
{ firstName: 'Ed', lastName: 'Spencer', age: 30 },
{ firstName: 'Tommy', lastName: 'Maintz', age: 41 },
{ firstName: 'Aaron', lastName: 'Conran', age: 24 },
{ firstName: 'Jamie', lastName: 'Avins', age: 76 }
]
});
Модель:
Ext.define('model.User', {
extend: 'Ext.data.Model',
fields: [
{ name: 'firstName', type: 'string' },
{ name: 'lastName', type: 'string' }
]
});
На данный момент все работает нормально.
Затем я создал второй магазин, в котором есть еще одно поле 'возраст'. Теперь я хочу передать в магазин параметр «модель», чтобы можно было «переключаться» между разными моделями.
Я пробовал что-то вроде этого:
магазин
Ext.define('store.Test', {
extend: 'Ext.data.Store',
myModel: null,
constructor : function(model) {
myModel = model;
},
model: this.myModel,
data: [
{ firstName: 'Ed', lastName: 'Spencer', age: 30 },
{ firstName: 'Tommy', lastName: 'Maintz', age: 41 },
{ firstName: 'Aaron', lastName: 'Conran', age: 24 },
{ firstName: 'Jamie', lastName: 'Avins', age: 76 }
]
});
и в основном файле:
[...]
store: Ext.create('store.Test', {
model: 'model.UserWithAge'
}),
[...]
Но Google Chrome дает мне:
Uncaught TypeError: Object [object Object],[object Object],[object Object],[object Object] has no method 'getRange'
Есть какие-нибудь намеки на то, что я сделал неправильно?