(oldVnode, vnode)
| 9067 | |
| 9068 | //更新指令 比较oldVnode和vnode,根据oldVnode和vnode的情况 触发指令钩子函数bind,update,inserted,insert,componentUpdated,unbind钩子函数 |
| 9069 | function _update(oldVnode, vnode) { |
| 9070 | |
| 9071 | |
| 9072 | var isCreate = oldVnode === emptyNode; // 判断旧的指令是否等于一个空的指令 |
| 9073 | var isDestroy = vnode === emptyNode;// 判断现在指令是否等于一个空的指令 |
| 9074 | //指令字符串 vm this上下文 |
| 9075 | console.log(oldVnode) |
| 9076 | console.log(vnode) |
| 9077 | //规范化的指令,为指令属性修正变成规范的指令数据。返回指令数据集合 |
| 9078 | var oldDirs = normalizeDirectives$1( |
| 9079 | oldVnode.data.directives, //vonde指令对象集合 |
| 9080 | oldVnode.context //vm vne实例化对象,或者是组件实例化的对象 |
| 9081 | ); |
| 9082 | //规范化的指令,为指令属性修正变成规范的指令数据。返回指令数据集合 |
| 9083 | var newDirs = normalizeDirectives$1( |
| 9084 | vnode.data.directives, //vonde指令对象集合 |
| 9085 | vnode.context //vm vne实例化对象,或者是组件实例化的对象 |
| 9086 | ); |
| 9087 | |
| 9088 | var dirsWithInsert = []; |
| 9089 | var dirsWithPostpatch = []; |
| 9090 | |
| 9091 | var key, oldDir, dir; |
| 9092 | for (key in newDirs) { //循环新的指令集合 |
| 9093 | console.log(newDirs[key]) |
| 9094 | |
| 9095 | oldDir = oldDirs[key]; //获取旧的单个指令值 |
| 9096 | dir = newDirs[key];//获取新的单个指令值 |
| 9097 | if (!oldDir) { //如果旧的不存在了 |
| 9098 | // new directive, bind 新指令,绑定 |
| 9099 | callHook$1( |
| 9100 | dir, //新的指令值 |
| 9101 | 'bind', //触发bind钩子函数 |
| 9102 | vnode,//新的vonde |
| 9103 | oldVnode //旧的vonde |
| 9104 | ); |
| 9105 | if (dir.def && dir.def.inserted) { //获取指令的属性。 插入标记,指令 |
| 9106 | dirsWithInsert.push(dir); //记录插入指令 |
| 9107 | } |
| 9108 | } else { |
| 9109 | |
| 9110 | // existing directive, update 现有的指令,更新 |
| 9111 | dir.oldValue = oldDir.value; // 如有指令 <div v-hello='123'></div> value=123. 如果更新了123 就是更新值 |
| 9112 | callHook$1(dir, |
| 9113 | 'update', //触发更新钩子函数 |
| 9114 | vnode, |
| 9115 | oldVnode |
| 9116 | ); |
| 9117 | if (dir.def && dir.def.componentUpdated) { // 组件更新 |
| 9118 | dirsWithPostpatch.push(dir); //记录更新 |
| 9119 | } |
| 9120 | } |
| 9121 | } |
| 9122 | |
| 9123 | if (dirsWithInsert.length) { |
| 9124 | var callInsert = function () { |
| 9125 | for (var i = 0; i < dirsWithInsert.length; i++) { |
| 9126 | callHook$1( |
no test coverage detected