vModel.js 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.createTransformModel = exports.defaultMatch = void 0;
  4. const utils_1 = require("../utils");
  5. const vOn_1 = require("./vOn");
  6. function defaultMatch(node, context) {
  7. return (0, utils_1.isUserComponent)(node, context);
  8. }
  9. exports.defaultMatch = defaultMatch;
  10. /**
  11. * 百度、快手小程序的自定义组件,不支持动态事件绑定,故 v-model 也需要调整
  12. * @param baseTransformModel
  13. * @returns
  14. */
  15. function createTransformModel(baseTransformModel, { match } = {
  16. match: defaultMatch,
  17. }) {
  18. return (dir, node, context, augmentor) => {
  19. const res = baseTransformModel(dir, node, context, augmentor);
  20. if (!match(node, context)) {
  21. return res;
  22. }
  23. const props = res.props;
  24. if (props[1]) {
  25. // input,textarea 的 v-model 事件可能会被合并到已有的 input 中
  26. const { arg, exp } = props[1];
  27. (0, vOn_1.addEventOpts)(arg.content, exp, node, context);
  28. props[1].exp = (0, vOn_1.createCustomEventExpr)();
  29. }
  30. return res;
  31. };
  32. }
  33. exports.createTransformModel = createTransformModel;