This repository was archived by the owner on Nov 12, 2024. It is now read-only.
Description Magix.State
用于在magix项目中共享数据,并具备与Magix.Router类似的功能:可以在view中方便的监听,同时当Magix.State中的数据变化时,与Magix.Router派发地址变化事件一样的从根view到子view依次派发数据变化的事件
API
view.observeState
用于监听Magix.State中的数据变化
let Magix = require ( 'magix' ) ;
module . exports = Magix . View . extend ( {
init ( ) {
this . observeState ( 'abc,def' ) ; //监听Magix.State中数据key为abc及def的变化,当abc或def有变化时,view的render方法被调用
} ,
render ( ) {
console . log ( 'view render' ) ;
}
} ) ;
Magix.State.get
从Magix.State中获取数据
let Magix = require ( 'magix' ) ;
module . exports = Magix . View . extend ( {
init ( ) {
this . observeState ( 'abc,def' ) ;
} ,
render ( ) {
let state = Magix . State . get ( ) ; //不传key,获取整个state
console . log ( state ) ;
let abcState = Magix . State . get ( 'abc' ) ; //获取abc这个数据
console . log ( abcState ) ;
}
} ) ;
Magix.State.set
设置Magix.State中的数据,同时从根view到子view派发数据变化的事件
let Magix = require ( 'magix' ) ;
module . exports = Magix . View . extend ( {
init ( ) {
this . observeState ( 'abc,def' ) ;
} ,
render ( ) {
console . log ( 'view render' ) ;
} ,
'test<click>' ( ) {
Magix . State . set ( {
abc : Math . random ( ) ;
} , true ) ; //set接收2个参数,第一个参数为要设置的数据对象,第二个为是否静默设置,如果为true,则只设置数据,不派发变化的事件
Magix . State . set ( {
def : Math . random ( ) ;
} ) ;
}
} ) ;
Magix.State.has
获取Magix.State是否有指定key的数据
let Magix = require ( 'magix' ) ;
module . exports = Magix . View . extend ( {
init ( ) {
this . observeState ( 'abc,def' ) ;
if ( ! Magix . State . has ( 'abc' ) ) { //设置初始值
Magix . State . set ( {
abc : - 1
} , true ) ;
}
} ,
render ( ) {
console . log ( 'view render' ) ;
}
} ) ; Reactions are currently unavailable
Magix.State
API
view.observeState
Magix.State.get
Magix.State.set
Magix.State.has