mirror of
https://gitee.com/vant-contrib/vant-weapp.git
synced 2025-04-06 03:58:05 +08:00
52 lines
1.5 KiB
JavaScript
52 lines
1.5 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
function setAsync(context, data) {
|
|
return new Promise(function (resolve) {
|
|
context.setData(data, resolve);
|
|
});
|
|
}
|
|
exports.behavior = Behavior({
|
|
created: function () {
|
|
var _this = this;
|
|
if (!this.$options) {
|
|
return;
|
|
}
|
|
var cache = {};
|
|
var computed = this.$options().computed;
|
|
var keys = Object.keys(computed);
|
|
this.calcComputed = function () {
|
|
var needUpdate = {};
|
|
keys.forEach(function (key) {
|
|
var value = computed[key].call(_this);
|
|
if (cache[key] !== value) {
|
|
cache[key] = value;
|
|
needUpdate[key] = value;
|
|
}
|
|
});
|
|
return needUpdate;
|
|
};
|
|
},
|
|
attached: function () {
|
|
this.set();
|
|
},
|
|
methods: {
|
|
// set data and set computed data
|
|
set: function (data, callback) {
|
|
var _this = this;
|
|
var stack = [];
|
|
if (data) {
|
|
stack.push(setAsync(this, data));
|
|
}
|
|
if (this.calcComputed) {
|
|
stack.push(setAsync(this, this.calcComputed()));
|
|
}
|
|
return Promise.all(stack).then(function (res) {
|
|
if (callback && typeof callback === 'function') {
|
|
callback.call(_this);
|
|
}
|
|
return res;
|
|
});
|
|
}
|
|
}
|
|
});
|