MCPcopy Create free account
hub / github.com/ygs-code/vue / genComponentModel

Function genComponentModel

vue.js:9872–9919  ·  view source on GitHub ↗

* Cross-platform code generation for component v-model * 组件v-model的跨平台代码生成 更新$$v 数据 * 为虚拟dom添加model属性,

(
        el, //虚拟dom
        value, //绑定v-model 的值
        modifiers
    )

Source from the content-addressed store, hash-verified

9870 * 为虚拟dom添加model属性,
9871 */
9872 function genComponentModel(
9873 el, //虚拟dom
9874 value, //绑定v-model 的值
9875 modifiers
9876 ) {
9877 var ref = modifiers || {};
9878 var number = ref.number; //数字
9879 var trim = ref.trim; //去除字符串
9880 // 给baseValueExpression赋值一个默认的字符串
9881 var baseValueExpression = '$$v';
9882 var valueExpression = baseValueExpression;
9883 if (trim) {
9884 // 判断类型是否为字符串,如果是使用去空格方法,如果不是返回原值
9885 valueExpression =
9886 "(typeof " + baseValueExpression + " === 'string'" +
9887 "? " + baseValueExpression + ".trim()" +
9888 ": " + baseValueExpression + ")";
9889 }
9890 if (number) { //如果是数字 则用数字渲染方法
9891 valueExpression = "_n(" + valueExpression + ")";
9892 }
9893
9894 /*
9895 *创赋值代码,转义字符串对象拆分字符串对象 把后一位key分离出来
9896 * 返回 key"=" value
9897 * 或者 $set(object[info],key,valueExpression)
9898 */
9899 var assignment = genAssignmentCode(
9900 value, //绑定v-model 的属性值
9901 valueExpression //值
9902 );
9903 console.log(value)
9904 console.log(valueExpression)
9905 console.log(baseValueExpression)
9906 console.log(assignment)
9907
9908
9909 //如果 trim不存在,number 不存在 则 valueExpression 默认为$$v
9910 //回调函数是 $set(object[info],key,$$v) 更新$$v的值
9911 el.model = {
9912 value: ("(" + value + ")"), // 绑定v-model 的值
9913 expression: ("\"" + value + "\""), //绑定v-model 的值
9914 //函数 $set(object[info],key,$$v) //$set更新值函数
9915 callback: ("function (" + baseValueExpression + ") {" + assignment + "}")
9916 };
9917
9918
9919 }
9920
9921 /**
9922 * Cross-platform codegen helper for generating v-model value assignment code.

Callers 1

modelFunction · 0.85

Calls 1

genAssignmentCodeFunction · 0.85

Tested by

no test coverage detected