Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Как изменить поля в модели? Или как пересоздать модель? (https://javascript.ru/forum/extjs/53662-kak-izmenit-polya-v-modeli-ili-kak-peresozdat-model.html)

Risa 12.02.2015 17:36

Как изменить поля в модели? Или как пересоздать модель?
 
Вернее даже так: как получить модель? Есть такая функция как getModel? Или как пересоздать модель?

Risa 13.02.2015 19:14

Получить модель можно таким способом: Ext.ClassManager.get('NameModel')
Для своих целей я решила задачу так: каждый раз создаю модель с уникальным ид в имени (Ext.id()). Мне такое решение не очень нравится, но другого я пока не нашла.

novikov 13.02.2015 22:33

Ext.ClassManager.get('NameModel') вернёт класс, но не экземпляр. Экземпляры моделей иногда называют записями (records). Есть соответствующие методы loadRecord и getRecord у форм. Обработчики событий иногда получают экземпляры моделей, например, selectionchange у гридов. Записи можно искать в сторах - findRecord и др. У многих компонентов есть метод getStore.

novikov 20.02.2015 12:47

http://www.sencha.com/blog/deep-dive...ext-js-5-data/

{
    makeStore: function(configuration) {
        
        var storeId = configuration.name;
        var store = 'System.store.gridEditor.' + Ext.String.capitalize(configuration.name);

        Ext.define(store, {
            extend: 'System.store.gridEditor.Store',
            storeId: storeId,
            model: this.makeModel(configuration)
        });
        
        Ext.create(store);
        
        return storeId;
        
    },
    
    makeModel: function(configuration) {
        
        var model = 'System.model.gridEditor.' + Ext.String.capitalize(configuration.name);
        Ext.define(model, {
            extend: 'System.model.gridEditor.Model',
            fields: this.makeFields(configuration),
            proxy: {
                url: configuration.api + configuration.name + '/',
                reader: {
                    type: 'json',
                    rootProperty: 'data',
                    totalProperty: 'totalCount',
                    messageProperty : 'error'
                }
            }
        });
        
        return model;
        
    }
}


Часовой пояс GMT +3, время: 15:40.