mk-meta-engine
Version:
元数据化引擎,在mk-app-loader实现的应用隔离基础上,实现可以用json元数据描述界面模型,并提供了action、reducer的基础函数和monkeyKing组件.
83 lines (58 loc) • 2.23 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _class, _temp, _initialiseProps;
exports.default = creator;
var _immutable = require('immutable');
var _immutable2 = _interopRequireDefault(_immutable);
var _context = require('./context');
var _context2 = _interopRequireDefault(_context);
var _common = require('./common');
var common = _interopRequireWildcard(_common);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var reducer = (_temp = _class = function reducer(option) {
(0, _classCallCheck3.default)(this, reducer);
_initialiseProps.call(this);
this.appInfo = option.appInfo;
}, _initialiseProps = function _initialiseProps() {
var _this = this;
this.init = function (state, option) {
var _option$data = option.data,
data = _option$data === undefined ? {} : _option$data;
return _this.initByImmutable(state, {
data: _immutable2.default.fromJS(data)
});
};
this.initByImmutable = function (state, option) {
var data = option.data;
//清除state中非@@开头的属性,那属性是mk-app-loader增加的
var keys = [];
state.mapKeys(function (key) {
if (key.indexOf('@@') === -1) keys.push(key);
});
keys.forEach(function (key) {
state = state.remove(key);
});
//设置状态
return state.set('data', data);
};
this.getMeta = common.getMeta;
this.getField = common.getField;
this.getFields = common.getFields;
this.setField = common.setField;
this.setFields = common.setFields;
this.gm = common.getMeta;
this.gf = common.getField;
this.gfs = common.getFields;
this.sf = common.setField;
this.sfs = common.setFields;
this.context = _context2.default;
}, _temp);
function creator(option) {
return new reducer(option);
}
module.exports = exports['default'];