Ext JS の Ext.data.Model の状態フラグと同期についてメモっとく。まずはモデル単体での状態フラグの変化と同期動作が大事なんじゃないかと。
状態フラグ
モデルのインスタンスの基本的な状態フラグは下表のとおり。全フラグが false
のときは「インスタンスが同期されている状態」になる。
状態フラグ | 説明 |
---|---|
phantom | 作成されたインスタンスが同期されていない状態 |
dirty | 変更されたインスタンスが同期されていない状態 |
dropped | 削除されたインスタンスが同期されていない状態 |
erased | 削除されたインスタンスが同期されている状態 |
状態フラグの変化と同期動作
モデルのインスタンスは大抵下記のメソッドで操作することになるので、その場合に状態フラグの変化と同期動作を覚えておけばいい。
メソッド | 条件 | 状態フラグの変化 | 同期動作 | 説明 |
---|---|---|---|---|
(new) | - | phantom: true | - | インスタンスを作成すると phantom になる。 |
load | - | - | READ (GET) | インスタンスを読込すると「全フラグが false」になる。 |
set | - | dirty: true | - | インスタンスを変更すると dirty になる。 |
drop | phantom: true | dropped: true erased: true |
- | 作成されて同期されていないインスタンスを削除すると dropped & erased になる。 |
phantom: false | dropped: true | インスタンスを削除すると dropped になる。 | ||
save | phantom: true | phantom: false dirty: false |
CREATE (POST) | 作成されて同期されていないインスタンスが同期されている状態になる。 |
phantom: false dirty: true |
dirty: false | UPDATE (PUT) | 変更されて同期されていないインスタンスが同期されている状態になる。 | |
dropped: true | erased: true | DELETE (DELETE) | 削除されて同期されていないインスタンスが同期されている状態になる。 | |
erase | phantom: true | dropped: true erased: true |
- | drop と save を連続実行するのと同じになる。 |
phantom: false | DELETE (DELETE) |