(
el, //虚拟dom
value, //v-model属性值
modifiers
)
| 10277 | |
| 10278 | //为虚拟dom添加change 函数 ,change函数调用 set 去更新 select选中数据的值 |
| 10279 | function genSelect( |
| 10280 | el, //虚拟dom |
| 10281 | value, //v-model属性值 |
| 10282 | modifiers |
| 10283 | ) { |
| 10284 | var number = modifiers && modifiers.number; |
| 10285 | var selectedVal = "Array.prototype.filter" + |
| 10286 | ".call($event.target.options," + |
| 10287 | "function(o){" + |
| 10288 | " return o.selected" + |
| 10289 | "})" + |
| 10290 | ".map(function(o){" + |
| 10291 | "var val = \"_value\" in o ? o._value : o.value;" + |
| 10292 | "return " + (number ? '_n(val)' : 'val') + "" + |
| 10293 | "})"; |
| 10294 | console.log(selectedVal) |
| 10295 | |
| 10296 | var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]'; |
| 10297 | var code = "var $$selectedVal = " + selectedVal + ";"; |
| 10298 | |
| 10299 | // * 返回 key"=" $$selectedVal |
| 10300 | // * 或者 $set(object[info],key,$$selectedVal) |
| 10301 | |
| 10302 | code = code + " " + ( |
| 10303 | genAssignmentCode( |
| 10304 | value, //v-model属性值 |
| 10305 | assignment // $$selectedVal是select选中数据的值 |
| 10306 | ) |
| 10307 | ); |
| 10308 | //这里字符串js意思是。先执行Array.prototype.filter 获取到值之后 在调用 $set(object[info],key,value) 更新数据 |
| 10309 | //在把这个事件添加到change事件中 |
| 10310 | addHandler( |
| 10311 | el, //虚拟dom |
| 10312 | 'change', //name 事件名称 事件类型 |
| 10313 | code, //事件函数 |
| 10314 | null, //事件类型状态 |
| 10315 | true // 根据important为true 把事件添加在前面 假就添加在尾部 |
| 10316 | ); |
| 10317 | } |
| 10318 | // 如果虚拟dom标签是 'input' 类型不是checkbox,radio 或者是'textarea' 标签的时候,获取真实的dom的value值调用 change或者input方法执行set方法更新数据 |
| 10319 | function genDefaultModel( |
| 10320 | el, //虚拟dom |
no test coverage detected