(el)
| 13794 | } |
| 13795 | //检查属性,为虚拟dom属性转换成对应需要的虚拟dom vonde数据 为el虚拟dom 添加muted, events,nativeEvents,directives |
| 13796 | function processAttrs(el) { |
| 13797 | var list = el.attrsList; //获取属性列表 |
| 13798 | var i, //循环数组的索引 |
| 13799 | l, //属性数组长度 |
| 13800 | name, //获取 view 属性的名称 |
| 13801 | rawName,//获取 view 属性的名称 |
| 13802 | value, //属性名 |
| 13803 | modifiers, |
| 13804 | isProp; //是否是props 属性 |
| 13805 | |
| 13806 | for (i = 0, l = list.length; i < l; i++) { //循环属性列表 |
| 13807 | name = rawName = list[i].name; //获取 view 属性的名称 |
| 13808 | value = list[i].value; //获取属性的值 |
| 13809 | |
| 13810 | if (dirRE.test(name)) { // 判断是否是 v-或者@或者: 属性开头的 |
| 13811 | // mark element as dynamic |
| 13812 | el.hasBindings = true; // 动态标记元素 |
| 13813 | // modifiers 编辑器 //把字符串中的对象拆分成 对象比如 data.object.info.age 变成对象{object:true,info:true,age:true} 返回出去 |
| 13814 | modifiers = parseModifiers(name); |
| 13815 | if (modifiers) { |
| 13816 | //把刚才后面的.+字符串去除掉 获取最后一位的key |
| 13817 | name = name.replace(modifierRE, ''); |
| 13818 | } |
| 13819 | if (bindRE.test(name)) { // v-bind 匹配开始匹配是 :或者是v-bind |
| 13820 | |
| 13821 | name = name.replace(bindRE, ''); //去除 开始匹配是 :或者是v-bind |
| 13822 | // 处理value 解析成正确的value,把过滤器 转换成vue 虚拟dom的解析方法函数 比如把过滤器 ' ab | c | d' 转换成 _f("d")(_f("c")(ab)) |
| 13823 | // 表达式中的过滤器解析方法 |
| 13824 | value = parseFilters(value); |
| 13825 | isProp = false; |
| 13826 | if (modifiers) { //匹配到对象点的时候 |
| 13827 | if (modifiers.prop) {//匹配到有prop属性的时候 |
| 13828 | isProp = true; |
| 13829 | //属性 v-model 变成 vModel |
| 13830 | name = camelize(name); |
| 13831 | //如果是innerHtml属性变成innerHTML |
| 13832 | if (name === 'innerHtml') { |
| 13833 | name = 'innerHTML'; |
| 13834 | } |
| 13835 | } |
| 13836 | if (modifiers.camel) { |
| 13837 | name = camelize(name); |
| 13838 | } |
| 13839 | if (modifiers.sync) { //同步属性 |
| 13840 | |
| 13841 | //为虚拟dom添加events 事件对象属性,如果添加@click='clickEvent' 则此时 虚拟dom为el.events.click.value="clickEvent" |
| 13842 | //或者虚拟dom添加nativeEvents 事件对象属性,如果添加@click.native='clickEvent' 则此时 虚拟dom为el.nativeEvents.click.value="clickEvent" |
| 13843 | addHandler( |
| 13844 | el, |
| 13845 | ("update:" + (camelize(name))), // //属性 v-model 变成 vModel |
| 13846 | //创建赋值代码 |
| 13847 | // 创赋值代码,子功能转义字符串对象拆分字符串对象 把后一位key分离出来 |
| 13848 | genAssignmentCode( //返回值 函数 |
| 13849 | value, //对象 |
| 13850 | "$event" //key |
| 13851 | ) |
| 13852 | ); |
| 13853 | } |
no test coverage detected