Я использую Extjs4 и MVC. Я хотел бы изменить динамические поля моей модели ... Что-то вроде добавления переменного количества полей ... Любые предложения?Extjs4 Как динамически менять модель?
ответ
Вы можете использовать функцию model.setFields(fieldsArray)
, показанную here в API. Этот метод заменяет все существующие поля в модели любыми новыми полями, которые вы включаете в аргумент. Существует не статический метод getFields
для захвата существующих полей, чтобы не перезаписывать их, но их достаточно просто получить, используя model.prototype.fields
.
Я сделал это недавно, чтобы привязать поля настройки динамического разрешения к модели «Пользователь» до того, как я загрузил пользователя. Вот пример:
Ext.define('myApp.controller.Main', {
extend: 'Ext.app.Controller',
models: [
'User',
],
stores: [
'CurrentUser', // <-- this is not autoLoad: true
'PermissionRef', // <-- this is autoLoad: true
],
views: ['MainPanel'],
init: function() {
var me = this;
// when the PermissionRef store loads
// use the data to update the user model
me.getPermissionRefStore().on('load', function(store, records) {
var userModel = me.getUserModel(),
fields = userModel.prototype.fields.getRange();
// ^^^ this prototype function gets the original fields
// defined in myApp.model.User
// add the new permission fields to the fields array
Ext.each(records, function(permission) {
fields.push({
name: permission.get('name'),
type: 'bool'
});
});
// update the user model with ALL the fields
userModel.setFields(fields);
// NOW load the current user with the permission data
// (defined in a Java session attribute for me)
me.getCurrentUserStore().load();
});
}
});
Я только заметил, что это дубликат [этого] (http://stackoverflow.com/questions/5751289/dynamic-model-with-extjs-4) после того, как я ответил на него. Я дал тот же ответ там ... – Geronimo
возможно дубликат [Динамическая модель с ExtJS 4] (http://stackoverflow.com/questions/5751289/dynamic-model-with-extjs-4) –
Что именно вы пытаетесь делать? Можете ли вы быть более конкретным? А также какую версию ExtJ вы используете? – sha
Extjs4, например, у меня есть модель с 3-мя полями ... Я хочу расширить ее с помощью других шести полей ... –