(
el, //虚拟dom
value, //属性在view 的值
modifiers //标签类型对象 修饰符
)
| 10317 | } |
| 10318 | // 如果虚拟dom标签是 'input' 类型不是checkbox,radio 或者是'textarea' 标签的时候,获取真实的dom的value值调用 change或者input方法执行set方法更新数据 |
| 10319 | function genDefaultModel( |
| 10320 | el, //虚拟dom |
| 10321 | value, //属性在view 的值 |
| 10322 | modifiers //标签类型对象 修饰符 |
| 10323 | ) { |
| 10324 | console.log(el) |
| 10325 | console.log(value) |
| 10326 | |
| 10327 | var type = el.attrsMap.type; //获取类型 |
| 10328 | |
| 10329 | // warn if v-bind:value conflicts with v-model 警告如果v-bind:值与v-model冲突 |
| 10330 | // except for inputs with v-bind:type 除了输入v-bind:type |
| 10331 | { |
| 10332 | var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value']; |
| 10333 | var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type']; |
| 10334 | if (value$1 && !typeBinding) { //如果type属性没有则发出警告 |
| 10335 | var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value'; |
| 10336 | warn$1( |
| 10337 | binding + "=\"" + value$1 + "\" conflicts with v-model on the same element " + |
| 10338 | 'because the latter already expands to a value binding internally' |
| 10339 | ); |
| 10340 | } |
| 10341 | } |
| 10342 | |
| 10343 | var ref = modifiers || {}; |
| 10344 | var lazy = ref.lazy; //只有在焦点不集中时,才应该更新带有lazy的输入 失去焦点 |
| 10345 | var number = ref.number; //数字 |
| 10346 | var trim = ref.trim; //去除两边空格 |
| 10347 | var needCompositionGuard = !lazy && type !== 'range'; //如果不是滑动类型input |
| 10348 | var event = lazy ? //获取类型事件 可以是change或者是input 事件 |
| 10349 | 'change' |
| 10350 | : type === 'range' ? //判断是否是滑动块 |
| 10351 | RANGE_TOKEN //'__r'虚拟dom渲染函数 |
| 10352 | : 'input'; |
| 10353 | |
| 10354 | var valueExpression = '$event.target.value'; |
| 10355 | if (trim) { |
| 10356 | valueExpression = "$event.target.value.trim()"; //获取真实dom的value |
| 10357 | } |
| 10358 | if (number) { |
| 10359 | valueExpression = "_n(" + valueExpression + ")"; |
| 10360 | } |
| 10361 | //更新值 |
| 10362 | // * 返回 key"=" value |
| 10363 | // * 或者 $set(object[info],key,value) |
| 10364 | var code = genAssignmentCode( |
| 10365 | value, //v-model 的属性值 |
| 10366 | valueExpression //真实dom的value |
| 10367 | ); |
| 10368 | if (needCompositionGuard) { //如果不是滑动块 |
| 10369 | code = "if($event.target.composing)return;" + code; |
| 10370 | } |
| 10371 | //添加props 属性 |
| 10372 | addProp(el, 'value', ("(" + value + ")")); |
| 10373 | //添加绑定事件 |
| 10374 | addHandler( |
| 10375 | el, //虚拟dom |
| 10376 | event, //事件类型 |
no test coverage detected