diff options
author | tschicke-brown <tyler_schicke@brown.edu> | 2019-02-22 12:36:11 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-22 12:36:11 -0500 |
commit | d2a34dca0cac114190f8f0eb36769b2b8fd9f329 (patch) | |
tree | 1128cba0e4532e1ca9ad5eba8c85cec1c74c2c5a /src/fields/ListField.ts | |
parent | 9e4403f9c14cdb7e05901af5f8509753269eeb07 (diff) | |
parent | 0a5b336a638694b8d2f9d7366dc4dca6af97e970 (diff) |
Merge pull request #9 from browngraphicslab/collectionView
Added CollectionView
Diffstat (limited to 'src/fields/ListField.ts')
-rw-r--r-- | src/fields/ListField.ts | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/fields/ListField.ts b/src/fields/ListField.ts index 75c2eb343..700600804 100644 --- a/src/fields/ListField.ts +++ b/src/fields/ListField.ts @@ -1,4 +1,4 @@ -import { action, IArrayChange, IArraySplice, IObservableArray, observe } from "mobx"; +import { action, IArrayChange, IArraySplice, IObservableArray, observe, observable, Lambda } from "mobx"; import { Server } from "../client/Server"; import { UndoManager } from "../client/util/UndoManager"; import { Types } from "../server/Message"; @@ -13,7 +13,12 @@ export class ListField<T extends Field> extends BasicField<T[]> { if (save) { Server.UpdateField(this); } - observe(this.Data as IObservableArray<T>, (change: IArrayChange<T> | IArraySplice<T>) => { + this.observeList(); + } + + private observeDisposer: Lambda | undefined; + private observeList(): void { + this.observeDisposer = observe(this.Data as IObservableArray<T>, (change: IArrayChange<T> | IArraySplice<T>) => { this.updateProxies() if (change.type == "splice") { UndoManager.AddEvent({ @@ -27,7 +32,15 @@ export class ListField<T extends Field> extends BasicField<T[]> { }) } Server.UpdateField(this); - }) + }); + } + + protected setData(value: T[]) { + if (this.observeDisposer) { + this.observeDisposer() + } + this.data = observable(value); + this.observeList(); } private updateProxies() { |