This repository was archived by the owner on Nov 12, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
This repository was archived by the owner on Nov 12, 2024. It is now read-only.
Magix.State介绍 #39
Copy link
Copy link
Open
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');
}
});Metadata
Metadata
Assignees
Labels
No labels