mirror of https://gitee.com/cf-fz/WebCAD.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.3 KiB
69 lines
1.3 KiB
7 years ago
|
import * as mst from 'mobx-state-tree';
|
||
|
import * as _ from "lodash";
|
||
|
import * as THREE from "three";
|
||
|
const Todo = mst.types.model("Todo",
|
||
|
{
|
||
|
title: mst.types.maybe(mst.types.string),
|
||
|
done: false
|
||
|
},
|
||
|
{
|
||
|
toggle()
|
||
|
{
|
||
|
this.done = !this.done
|
||
|
},
|
||
|
setTitile(title: string)
|
||
|
{
|
||
|
this.title = title;
|
||
|
}
|
||
|
})
|
||
|
|
||
|
type iTodo = typeof Todo.Type
|
||
|
|
||
|
const Store = mst.types.model("Store",
|
||
|
{
|
||
|
todos: mst.types.array(Todo)
|
||
|
},
|
||
|
{
|
||
|
add(todo: iTodo | Object)
|
||
|
{
|
||
|
this.todos.push(todo)
|
||
|
}
|
||
|
}
|
||
|
)
|
||
|
|
||
|
// create an instance from a snapshot
|
||
|
const store = Store.create(
|
||
|
{
|
||
|
todos: [{
|
||
|
title: "ggg"
|
||
|
}]
|
||
|
}
|
||
|
)
|
||
|
let oldStore = mst.getSnapshot(store)
|
||
|
store.todos[0].setTitile("hello1")
|
||
|
mst.applySnapshot(store, oldStore);
|
||
|
|
||
|
let paths = [];
|
||
|
mst.onPatch(store,
|
||
|
p =>
|
||
|
{
|
||
|
let path;
|
||
|
path = p;
|
||
|
paths.push(path);
|
||
|
},
|
||
|
true)
|
||
|
store.todos[0].setTitile("hh");
|
||
|
|
||
|
store.todos[0].setTitile("123");
|
||
|
store.todos[0].setTitile("456");
|
||
|
store.todos[0].setTitile("hhh");
|
||
|
store.todos[0].setTitile("ggg");
|
||
|
|
||
|
console.log(paths);
|
||
|
|
||
|
mst.revertPatch(store, _.last(paths))
|
||
|
console.log('_.last(paths): ', _.last(paths));
|
||
|
console.log(mst.getSnapshot(store));
|
||
|
|
||
|
console.log(paths);
|