Skip to content
This repository was archived by the owner on Nov 12, 2024. It is now read-only.
This repository was archived by the owner on Nov 12, 2024. It is now read-only.

Magix.State介绍 #39

@xinglie

Description

@xinglie

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions