MCPcopy Index your code
hub / github.com/ygs-code/vue / genSelect

Function genSelect

vue.js:10279–10317  ·  view source on GitHub ↗
(
        el, //虚拟dom
        value, //v-model属性值
        modifiers
    )

Source from the content-addressed store, hash-verified

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

Callers 1

modelFunction · 0.85

Calls 2

genAssignmentCodeFunction · 0.85
addHandlerFunction · 0.85

Tested by

no test coverage detected