Документы говорят:
Модель представляет некоторый объект, которым управляет ваше приложение.
Хранилище - это просто набор экземпляров модели - обычно загружаетсяс сервера где-то.
Модели сохраняются в магазинах
Не только.Модели можно использовать отдельно (например, для заполнения форм данными. Для получения дополнительной информации см. Ext.form.Panel.loadRecord ).
Почему существует конфигурация прокси исохранить метод на модели?Я понимаю, что модели можно хранить только в магазинах.
Как я уже сказал, не только.
Почему грязный флаг не очищается просто, когда я добавляюмодельный объект в магазине?
Зачем это нужно?Запись становится чистой только тогда, когда она синхронизируется с соответствующей записью на стороне сервера.
Когда я добавляю объект модели в хранилище, почему модель не получает прокси, настроенный для этого хранилища?
Это опять-таки, потому что модель может использоваться без хранилища.
прокси является статической конфигурацией для Модели.Означает ли это, что мы не можем использовать объекты конкретной модели с несколькими источниками данных?
Мы не можем использовать объекты конкретной модели, но мы можем использовать одно определение модели для нескольких хранилищ.Например:
Ext.define('MyModel', {
// ... config
});
var store1 = Ext.create('Ext.data.Store', {
model: 'MyModel',
// ... config
proxy: {
// ...
// this proxy will be used when store1.sync() and store1.load() are called
}
// ...
});
// ...
var storeN = Ext.create('Ext.data.Store', {
model: 'MyModel',
// ... config
proxy: {
// ...
// this proxy will be used when storeN.sync() and storeN.load() are called
}
// ...
});
Поскольку store1 и storeN используют разные прокси, записи, содержащиеся в этих хранилищах, могут быть совершенно разными.
Когда мы определяем Store, мыопределение класса (тип магазина, если мы можем так его назвать) или это экземпляр магазина?
Да, когда мы определяем магазин, мы определяем класс.
Причина, по которой я спрашиваю: когда мы объявляем сетку, мы просто передаем ей конфигурацию магазина как хранилище: «MyApp.store.MyStore» - создает ли сетка экземпляр сетки этого типа или просто используетмагазин, который мы уже создали?
Существует несколько способов настройки конфигурации магазина для сетки:
store: existingStore,
store: 'someStoresId',
store: 'MyApp.store.MyStore',
В первом и втором случаях будут использоваться существующие экземпляры магазинов.В третьем случае будет использоваться только что созданный экземпляр 'MyApp.store.MyStore'
.Итак, store: 'MyApp.store.MyStore',
равно
var myStore = Ext.create('MyApp.store.MyStore', {});
// ...
// the following - is in a grid's config:
store: myStore,
ОБНОВЛЕНИЕ
Когда модель добавляется в магазин, а затем в магазинвызывается sync (), почему флаг очистки модели не очищен?
Он должен быть очищен, если ответ читателя, записывающего устройства и сервера не настроен должным образом.Посмотрите пример писателя .При синхронизации магазина автоматически удаляется грязный флаг.
Если класс модели вообще не имеет прокси-сервера, почему он отслеживает свой грязный статус?
Чтобы сообщить вам, изменилась ли запись с момента создания.
Что достигается введением концепции синхронизации моделей с сервером?
Предположим, вы создаете виджет, который содержит простой набор входных данных.Значения для этих входов могут быть загружены из дБ (этот набор входов представляет одну строку в таблице дБ).И когда пользователь изменяет значения входных данных, данные должны быть отправлены на сервер.Эти данные могут быть сохранены в одной записи.
Так что бы вы использовали для этого интерфейса: одну запись или хранилище с одной записью?
Автономная модель - для виджетов, которые представляют одну строку в таблице базы данных.
Store - для виджетов, представляющих набор строк в таблице базы данных.