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

Function genCheckboxModel

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

Source from the content-addressed store, hash-verified

10156
10157 //为input type="checkbox" 虚拟dom添加 change 函数 ,根据v-model是否是数组,调用change函数,调用 set 去更新 checked选中数据的值
10158 function genCheckboxModel(
10159 el, //虚拟dom
10160 value, //v-model view的属性值
10161 modifiers
10162 ) {
10163 console.log(el)
10164
10165 var number = modifiers && modifiers.number;
10166 var valueBinding = getBindingAttr(el, 'value') || 'null'; //获取 表单的 value属性值 如果 view 是 value="1"
10167 var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';
10168 var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';
10169
10170 /*
10171 view 绑定的 v-model="item.selected" 第二个参数为
10172 * Array.isArray(item.selected)?_i(item.selected,"index")>-1:(item.selected)
10173 * */
10174
10175 console.log("Array.isArray(" + value + ")" +
10176 "?_i(" + value + "," + valueBinding + ")>-1" +
10177 (
10178 trueValueBinding === 'true' ?
10179 (":(" + value + ")")
10180 : (":_q(" + value + "," + trueValueBinding + ")")
10181 ))
10182
10183 //在虚拟dom中添加prop属性
10184 addProp(el,
10185 'checked',
10186 "Array.isArray(" + value + ")" +
10187 "?_i(" + value + "," + valueBinding + ")>-1" +
10188 (
10189 trueValueBinding === 'true' ?
10190 (":(" + value + ")")
10191 : (":_q(" + value + "," + trueValueBinding + ")")
10192 )
10193 );
10194
10195
10196
10197
10198
10199
10200
10201 console.log("var $$a=" + value + "," +
10202 '$$el=$event.target,' +
10203 "$$c=$$el.checked?(" + trueValueBinding + "):(" + falseValueBinding + ");" +
10204 'if(Array.isArray($$a)){' +
10205 "var $$v=" + (number ? '_n(' + valueBinding + ')' : valueBinding) + "," +
10206 '$$i=_i($$a,$$v);' +
10207 "if($$el.checked){$$i<0&&(" + (genAssignmentCode(value, '$$a.concat([$$v])')) + ")}" +
10208 "else{$$i>-1&&(" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + ")}" +
10209 "}else{" + (genAssignmentCode(value, '$$c')) + "}")
10210 /*
10211 view 绑定的 v-model="item.selected" 第二个参数为
10212
10213 var $$a = item.selected, //属性值 v-model view的属性值 item.selected是否是数组
10214 $$el = $event.target, //目标dom 真实dom
10215 $$c = $$el.checked ? (true) : (false); //是否有选中

Callers 1

modelFunction · 0.85

Calls 4

getBindingAttrFunction · 0.85
addPropFunction · 0.85
genAssignmentCodeFunction · 0.85
addHandlerFunction · 0.85

Tested by

no test coverage detected