omix - allow multiple centralized stores

This commit is contained in:
dntzhang 2019-04-22 10:31:40 +08:00
parent 8208171f9e
commit 6835098554
1 changed files with 7 additions and 8 deletions

View File

@ -90,7 +90,6 @@ function updateByFnProp(ele, data) {
ele.setData(patch)
}
let globalStore = null
function create(store, option) {
if (arguments.length === 2) {
@ -99,7 +98,7 @@ function create(store, option) {
}
getApp().globalData && (getApp().globalData.store = store)
globalStore = store
option.data = option.data || {}
option.data.store = store.data
observeStore(store)
@ -160,20 +159,20 @@ function observeStore(store) {
patch['store.' + fixPath(path + '-' + prop)] = value
}
_update(patch)
_update(patch, store)
})
}
function _update(kv) {
for (let key in globalStore.instances) {
globalStore.instances[key].forEach(ins => {
function _update(kv, store) {
for (let key in store.instances) {
store.instances[key].forEach(ins => {
ins.setData.call(ins, kv)
updateStoreByFnProp(ins, globalStore.data)
updateStoreByFnProp(ins, store.data)
})
}
globalStore.onChange && globalStore.onChange(kv)
store.onChange && store.onChange(kv)
}
function updateStoreByFnProp(ele, data) {