2011-09-11 2 views
1

Модель:Как восстановить магазин extjs4?

Ext.define('Voting', { 
    extend: 'Ext.data.Model', 
    hasMany: [ 
     {model: 'VotingQuestion', name: 'questions'} 
    ] 
} 

и:

grid.bindStore(voting.questions()) 

затем использовать RowEditing добавлять/редактировать/удалять/курорт сетки

после этого, если я нажимаю кнопку отмены, есть любой простой способ восстановить «вопросы» для статуса init (кроме перезагрузки с сервера)?

благодаря

ответ

1

Это зависит от того, как вы реализовали функции Row редактирования. Если вы сделали это, чтобы сохранить изменения в режиме реального времени, я боюсь, вам придется позвонить на сервер, чтобы привести его в исходное состояние.

Если вы сохраняете состояние нескольких транзакций на стороне клиента, то у вас может быть что-то вроде средства UnDo/ReDo, где пользователь может отменить или повторить последние транзакции без вызова сервера. Это, по сути, дизайнерское решение, хотите ли вы иметь чат в сети для каждого редактирования или хотите иметь грубую зернистость данных, состоящую из нескольких транзакций.

Вам нужно быть осторожным и следить за тем, чтобы приложение было разработано для обеспечения высокого уровня параллельного доступа, чем необходимо создать дополнительный механизм для обработки целостности данных.

Вы можете иметь выглядеть extjs-timeline цели которого государство

Проект Timeline является продолжением библиотеки интерфейса ExtJS. цели Это очень просто:

Provide a framework for undo/redo of user events. 
Be generic enough for widespread basic use. 
Be extensible enough for easy customization. 
Be free to everyone, for any purpose, personal or commercial. 

EDIT: Check this example, это также имеет отсроченный механизм сохраняющиеся данных.

+0

ExtJS-график, кажется, опираться на extjs3.And изменение магазина является локальным, есть «отклонять()» метод для магазина? – atian25

+0

не мог понять ... вы можете уточнить, что вы говорите ... Я обновил ответ с еще одной проверкой ссылки, если это помогает –

+0

извините за мой бедный экспресс. Я имею в виду, есть ли какой-либо встроенный метод Store, выполняйте работу так же, как Model.reject() – atian25

1

Может быть, не прямо, что вы хотите, но вы пробовали

grid.getStore().each(function(record){ 
     record.reject(); 
}) 
+0

Я знаю, что отвергаю. , но мне интересно, может ли store.each получить удаленную запись? – atian25

+0

Store.each получает всю запись, в которой хранятся метаданные о том, была ли она изменена, что она сейчас и т. Д. Отклонить их все, вероятно, было бы «простым способом» для восстановления хранилища до его начального состояния. Если не так, я смущен тем, что вы хотите. – Alex

Смежные вопросы