mobx-vue
Version:
Vue bindings for MobX
37 lines • 1.11 kB
JavaScript
/**
* @author Kuitos
* @homepage https://github.com/kuitos/
* @since 2018-06-08 10:16
*/
import * as mobx from 'mobx';
/**
* check if is a mobx observable
* compatible with mobx 5
*/
function isMobxObservable(value) {
return !!(value.$mobx || value.__mobxDecorators || value[mobx.$mobx]);
}
export default function collectData(vm, data) {
var dataDefinition = typeof data === 'function' ? data.call(vm, vm) : (data || {});
var filteredData = Object.keys(dataDefinition).reduce(function (result, field) {
var value = dataDefinition[field];
if (isMobxObservable(value)) {
Object.defineProperty(vm, field, {
configurable: true,
get: function () {
return value;
},
// @formatter:off
// tslint:disable-next-line
set: function () { }
// @formatter:on
});
}
else {
result[field] = value;
}
return result;
}, {});
return filteredData;
}
//# sourceMappingURL=collectData.js.map