banggood-store
TypeScript icon, indicating that this package has built-in type declarations

0.0.20 • Public • Published

brain-store

use

import {Store,resource,IResource} from 'banggood-store';
const user:IResource = resource('PMS/User');
export default class StoreBase extends Store {
    static meta = {
        ...Store.meta,
        namespace: 'bang.portal'
    }
    context:any
    constructor(context){
        super(context)
    }
}

class Counter extends StoreBase {
  completed:string;
  name: string;
  get fullName() {
    return `${this.name} new`;
  }
  setCompleted(value) {
    this.completed = value;
  }
  setName(value) {
    this.name = value;
  }
}

class ContainerStore extends StoreBase{
    static meta={
        ...StoreBase.meta,
        eventScopes:[user],
        contextTypes:{
            CounterApp:Counter,
        }
    }
    _title='';
    get name():string{
        return this._title
    };
    constructor(context){
        super(context);
    }
    contextCounterStore():Counter{
        return this.context.CounterApp
    }
    triggerEvent(payload) { //事件广播,批量修改store里面数据状态 在相应store里面定义onEvent 函数并且eventScopes值设为user
        this.context.dispatch(user.created,payload);
    }
    setName(value) {
        this._title = value;
    }
}

class UserListStore extends StoreBase {
    static meta = {
        ...StoreBase.meta,
        eventScopes: [user],
    };

    getContextAppStore() {
       // return this.context.app;
    }
    payloadModel = null;
    onEvent(event) {
        if(typeof event.payload==='object'){
            Object.keys(event.payload).forEach(key =>{
                this[`${key}`] = event.payload[key];
            });
        }
        else {
            this.payloadModel = event.payload;
        }
    }
}
--- angular -----

import { Component,OnInit,OnChanges,SimpleChange,EventEmitter,Output } from '@angular/core';
import ContainerStore from './store/ContainerStore';
import {bind} from 'banggood-store'

@bind({store:ContainerStore})
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  store:ContainerStore
  constructor(){
    console.log(this)
  }
	onVoted(agreed: boolean) {
     this.store.setName('设置mobx');
  }
}

observablePromise

我们所有服务端数据结构都用此类构造出来

MapperEntity&JsonProperty

介绍(Introduction)

背景:对于单页应用,数据源是从API服务器获得的。 我们不用直接使用api数据。这时就需要适配器层赖根据需要转换数据。 此外,该适配器与API服务器的数据依赖关系相反(API Server被视为不可控制的非常不可靠,因为数据结构可能由后端 编码器为某些特定目的编辑)到我们的适配器这变得可靠。 因此,该库被创建为适配器。

USING

npm install json-mapper-object --save
or
yarn add json-mapper-object

Example

import {MapperEntity,JsonProperty} from 'json-mapper-object';

class Student {
    @JsonProperty('name')
    fullName=void 0;

    constructor() {
    }
}

class Address {
    @JsonProperty('first-line')
    firstLine=void 0;
    @JsonProperty('second-line')
    secondLine=void 0;
    @JsonProperty({clazz: Student})
    student=void 0;
    city=void 0;

    constructor() {
    }
}

class Person {
    @JsonProperty('Name')
    name=void 0;

    age=void 0;

    @JsonProperty('xing')
    surname=void 0;

    age=void 0;

    @JsonProperty({clazz: Address, name: 'AddressArr'})
    addressArr=void 0;

    @JsonProperty({clazz: Address, name: 'Address'})
    address=void 0;

    constructor() {
    }
}

现在这里是API服务器返回的数据,假设它已经被解析为JSON对象。

let json = {
  "Name": "Mark",
  "xing": "Galea",
  "age": 30,
  "AddressArr": [
      {
          "first-line": "Some where",
          "second-line": "Over Here",
          "city": "In This City",
          "student": {
              name1: "Ailun"
          }
      },
      {
          "first-line": "Some where",
          "second-line": "Over Here",
          "city": "In This City",
          "student": {
              name1: "Ailun"
          }
      }
  ],
  "Address": {
      "first-line": "Some where",
      "second-line": "Over Here",
      "city": "In This City",
      "student": {
          name: "Ailun"
      }
  }

只需使用以下代码即可映射。 该映射基于@JsonProperty装饰器元数据。

const person = MapperEntity(Person, json);

Dependencies (3)

Dev Dependencies (18)

Package Sidebar

Install

npm i banggood-store

Weekly Downloads

0

Version

0.0.20

License

MIT

Unpacked Size

37.6 kB

Total Files

22

Last publish

Collaborators

  • duanguang