preTransformNode 前置转换问题

来源:6-14 parse(10)

Arey_jy

2019-02-20

// model.js
/**
 * Expand input[v-model] with dyanmic type bindings into v-if-else chains
 * Turn this:
 *   <input v-model="data[type]" :type="type">
 * into this:
 *   <input v-if="type === 'checkbox'" type="checkbox" v-model="data[type]">
 *   <input v-else-if="type === 'radio'" type="radio" v-model="data[type]">
 *   <input v-else :type="type" v-model="data[type]">
 */

1、preTransformNode 是将 input 的指令 v-model 处理成 3种情况,这里为什么要将 checkbox radio 分开来呢,其实 <input :type="type" v-model="data[type]"> 这种情况可以包括处理上面2条的情况呀?

写回答

1回答

ustbhuangyi

2019-02-20

<input v-model="data[type]" :type="type"> 这种是动态绑定,而要把它处理成三种情况,是因为编译阶段会针对 checkbox 和 radio 做特殊的处理:
//img.mukewang.com/szimg/5c6ce0c20001797413040306.jpg

如果不这么处理的话是没法得到 checkbox 和 radio 的,注意这是编译阶段而不是运行时阶段


0
2
ustbhuangyi
回复
慕娘6538821
这里的编译特指把 Vue 的模板转换 render 函数的过程,编译可以离线运行(使用 vue-loader),也可以在线运行(使用带编译版本的 Vue.js)。
2020-11-07
共2条回复

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4984 学习 · 1037 问题

查看课程