41 lines
900 B
JavaScript

export var behavior = Behavior({
created: function created() {
var _this = this;
if (!this.$options) {
return;
}
var cache = {};
var setData = this.setData;
var _this$$options = this.$options(),
computed = _this$$options.computed;
var keys = Object.keys(computed);
var calcComputed = function calcComputed() {
var needUpdate = {};
keys.forEach(function (key) {
var value = computed[key].call(_this);
if (cache[key] !== value) {
cache[key] = needUpdate[key] = value;
}
});
return needUpdate;
};
Object.defineProperty(this, 'setData', {
writable: true
});
this.setData = function (data, callback) {
data && setData.call(_this, data, callback);
setData.call(_this, calcComputed());
};
},
attached: function attached() {
this.setData();
}
});