model-layer
Version:
77 lines (61 loc) • 1.49 kB
text/typescript
// const {Model} = require("model-layer");
import {Model, Types} from "../lib/index";
import assert from "assert";
class PagesModel extends Model<PagesModel> {
structure() {
return {
pages: Types.Array({
element: Types.Number
}),
current: Types.Number
};
}
}
const topPages = new PagesModel();
const bottomPages = new PagesModel();
// options is object of any properties
topPages.on("change", (event, options) => {
if ( options.stopSync ) {
return;
}
// call 'set' method with your options
bottomPages.set(event.changes, {
stopSync: true
});
});
bottomPages.on("change", (event, options) => {
if ( options.stopSync ) {
return;
}
// call 'set' method with your options
topPages.set(event.changes, {
stopSync: true
});
});
// change first model
topPages.set({
pages: [1, 2, 3, 4],
current: 1
});
assert.deepStrictEqual(topPages.row, {
pages: [1, 2, 3, 4],
current: 1
});
// and changed second model
assert.deepStrictEqual(bottomPages.row, {
pages: [1, 2, 3, 4],
current: 1
});
// change second model
bottomPages.set({
current: 2
});
assert.deepStrictEqual(bottomPages.row, {
pages: [1, 2, 3, 4],
current: 2
});
// and changed first model
assert.deepStrictEqual(topPages.row, {
pages: [1, 2, 3, 4],
current: 2
});