2011-09-11 11 views
1

モデル:extjs4ストアをリカバリする方法は?

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

と:

grid.bindStore(voting.questions()) 

その後、があり、私はキャンセルボタンをクリックすると、この後にグリッド

を訴える/追加/編集/削除するRowEditingを使用どのような簡単な方法でも、「質問」を初期状態(サーバーからのリロードストアを除く)に戻すことはできますか?それはあなたが行編集機能を実装しているかに依存

おかげ

答えて

1

。変更をリアルタイムで維持するようにした場合は、サーバーを初期状態にするためにサーバーを呼び出す必要があります。

クライアント側で少数のトランザクションの状態を保存する場合、UnDo/ReDo機能を使用して、サーバーコールを行わずに最後のトランザクションを元に戻したりやり直すことができます。基本的には、すべての編集に対してネットワークチャットチャットを行うか、複数のトランザクションで構成される粗粒度のデータ永続性を持たせたいかどうかの設計上の決定です。

データの整合性を処理するための追加のメカニズムよりも高いレベルの並行アクセスを目的としているアプリケーションは、慎重に検討しなければなりません。

あなたはその目標状態

タイムラインプロジェクトは、ExtJSのインタフェースライブラリの拡張であるextjs-timelineを見ることができます。 これの目標は単純です:

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

私の貧弱な表現に申し訳ありません。私はストアの任意のextビルドインメソッドは、ちょうどModel.reject()のような作業を行うことを意味します – atian25

1

たぶん、直接ではなく、あなたが何をしたいが、あなたは

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

私は拒否を知っています。 しかし、store.eachに削除されたレコードがあるのだろうか? – atian25

+0

Store.eachはレコード全体を取得します。このレコードには、変更されたかどうか、現在の状態などが保持されます。これらを拒否するには、ストアを初期状態に戻す「簡単な方法」が必要です。そうでなければ、私はあなたが望むものとして混乱しています。 – Alex

関連する問題