behavior.js 5.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. function setAsync(context, data) {
  4. return new Promise(function (resolve) {
  5. context.setData(data, resolve);
  6. });
  7. }
  8. exports.behavior = Behavior({
  9. created: function created() {
  10. var _this = this;
  11. if (!this.$options) {
  12. return;
  13. }
  14. var cache = {};
  15. var computed = this.$options().computed;
  16. var keys = Object.keys(computed);
  17. this.calcComputed = function () {
  18. var needUpdate = {};
  19. keys.forEach(function (key) {
  20. var value = computed[key].call(_this);
  21. if (cache[key] !== value) {
  22. cache[key] = value;
  23. needUpdate[key] = value;
  24. }
  25. });
  26. return needUpdate;
  27. };
  28. },
  29. attached: function attached() {
  30. this.set();
  31. },
  32. methods: {
  33. // set data and set computed data
  34. set: function set(data, callback) {
  35. var _this = this;
  36. var stack = [];
  37. if (data) {
  38. stack.push(setAsync(this, data));
  39. }
  40. if (this.calcComputed) {
  41. stack.push(setAsync(this, this.calcComputed()));
  42. }
  43. return Promise.all(stack).then(function (res) {
  44. if (callback && typeof callback === 'function') {
  45. callback.call(_this);
  46. }
  47. return res;
  48. });
  49. }
  50. }
  51. });
  52. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJlaGF2aW9yLmpzIl0sIm5hbWVzIjpbIk9iamVjdCIsInZhbHVlIiwiY29udGV4dCIsImV4cG9ydHMiLCJjcmVhdGVkIiwiX3RoaXMiLCJjYWNoZSIsImNvbXB1dGVkIiwia2V5cyIsIm5lZWRVcGRhdGUiLCJhdHRhY2hlZCIsIm1ldGhvZHMiLCJzZXQiLCJzdGFjayIsInNldEFzeW5jIiwiY2FsbGJhY2siXSwibWFwcGluZ3MiOiI7O0FBQ0FBLE9BQUFBLGNBQUFBLENBQUFBLE9BQUFBLEVBQUFBLFlBQUFBLEVBQTZDLEVBQUVDLE9BQS9DRCxJQUE2QyxFQUE3Q0E7QUFDQSxTQUFBLFFBQUEsQ0FBQSxPQUFBLEVBQUEsSUFBQSxFQUFpQztBQUM3QixXQUFPLElBQUEsT0FBQSxDQUFZLFVBQUEsT0FBQSxFQUFtQjtBQUNsQ0UsZ0JBQUFBLE9BQUFBLENBQUFBLElBQUFBLEVBQUFBLE9BQUFBO0FBREosS0FBTyxDQUFQO0FBR0g7QUFDREMsUUFBQUEsUUFBQUEsR0FBbUIsU0FBUztBQUN4QkMsYUFBUyxTQUFBLE9BQUEsR0FBWTtBQUNqQixZQUFJQyxRQUFKLElBQUE7QUFDQSxZQUFJLENBQUMsS0FBTCxRQUFBLEVBQW9CO0FBQ2hCO0FBQ0g7QUFDRCxZQUFJQyxRQUFKLEVBQUE7QUFDQSxZQUFJQyxXQUFXLEtBQUEsUUFBQSxHQUFmLFFBQUE7QUFDQSxZQUFJQyxPQUFPUixPQUFBQSxJQUFBQSxDQUFYLFFBQVdBLENBQVg7QUFDQSxhQUFBLFlBQUEsR0FBb0IsWUFBWTtBQUM1QixnQkFBSVMsYUFBSixFQUFBO0FBQ0FELGlCQUFBQSxPQUFBQSxDQUFhLFVBQUEsR0FBQSxFQUFlO0FBQ3hCLG9CQUFJUCxRQUFRTSxTQUFBQSxHQUFBQSxFQUFBQSxJQUFBQSxDQUFaLEtBQVlBLENBQVo7QUFDQSxvQkFBSUQsTUFBQUEsR0FBQUEsTUFBSixLQUFBLEVBQTBCO0FBQ3RCQSwwQkFBQUEsR0FBQUEsSUFBQUEsS0FBQUE7QUFDQUcsK0JBQUFBLEdBQUFBLElBQUFBLEtBQUFBO0FBQ0g7QUFMTEQsYUFBQUE7QUFPQSxtQkFBQSxVQUFBO0FBVEosU0FBQTtBQVRvQixLQUFBO0FBcUJ4QkUsY0FBVSxTQUFBLFFBQUEsR0FBWTtBQUNsQixhQUFBLEdBQUE7QUF0Qm9CLEtBQUE7QUF3QnhCQyxhQUFTO0FBQ0w7QUFDQUMsYUFBSyxTQUFBLEdBQUEsQ0FBQSxJQUFBLEVBQUEsUUFBQSxFQUEwQjtBQUMzQixnQkFBSVAsUUFBSixJQUFBO0FBQ0EsZ0JBQUlRLFFBQUosRUFBQTtBQUNBLGdCQUFBLElBQUEsRUFBVTtBQUNOQSxzQkFBQUEsSUFBQUEsQ0FBV0MsU0FBQUEsSUFBQUEsRUFBWEQsSUFBV0MsQ0FBWEQ7QUFDSDtBQUNELGdCQUFJLEtBQUosWUFBQSxFQUF1QjtBQUNuQkEsc0JBQUFBLElBQUFBLENBQVdDLFNBQUFBLElBQUFBLEVBQWUsS0FBMUJELFlBQTBCLEVBQWZDLENBQVhEO0FBQ0g7QUFDRCxtQkFBTyxRQUFBLEdBQUEsQ0FBQSxLQUFBLEVBQUEsSUFBQSxDQUF3QixVQUFBLEdBQUEsRUFBZTtBQUMxQyxvQkFBSUUsWUFBWSxPQUFBLFFBQUEsS0FBaEIsVUFBQSxFQUFnRDtBQUM1Q0EsNkJBQUFBLElBQUFBLENBQUFBLEtBQUFBO0FBQ0g7QUFDRCx1QkFBQSxHQUFBO0FBSkosYUFBTyxDQUFQO0FBTUg7QUFqQkk7QUF4QmUsQ0FBVCxDQUFuQloiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIHNldEFzeW5jKGNvbnRleHQsIGRhdGEpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgY29udGV4dC5zZXREYXRhKGRhdGEsIHJlc29sdmUpO1xuICAgIH0pO1xufVxuZXhwb3J0cy5iZWhhdmlvciA9IEJlaGF2aW9yKHtcbiAgICBjcmVhdGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICghdGhpcy4kb3B0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjYWNoZSA9IHt9O1xuICAgICAgICB2YXIgY29tcHV0ZWQgPSB0aGlzLiRvcHRpb25zKCkuY29tcHV0ZWQ7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoY29tcHV0ZWQpO1xuICAgICAgICB0aGlzLmNhbGNDb21wdXRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBuZWVkVXBkYXRlID0ge307XG4gICAgICAgICAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGNvbXB1dGVkW2tleV0uY2FsbChfdGhpcyk7XG4gICAgICAgICAgICAgICAgaWYgKGNhY2hlW2tleV0gIT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgbmVlZFVwZGF0ZVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gbmVlZFVwZGF0ZTtcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGF0dGFjaGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2V0KCk7XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIC8vIHNldCBkYXRhIGFuZCBzZXQgY29tcHV0ZWQgZGF0YVxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIChkYXRhLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHZhciBzdGFjayA9IFtdO1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHNldEFzeW5jKHRoaXMsIGRhdGEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmNhbGNDb21wdXRlZCkge1xuICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goc2V0QXN5bmModGhpcywgdGhpcy5jYWxjQ29tcHV0ZWQoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHN0YWNrKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2sgJiYgdHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwoX3RoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59KTtcbiJdLCJmaWxlIjoiYmVoYXZpb3IuanMifQ==