Thanks to visit codestin.com
Credit goes to github.com

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions