还是先来个图片,压压惊:
在 vue 中,我们使用的事件指令 v-on
事件绑定,对 vue 进行操作,但 vue 的内部是怎么进行事件的绑定的呢?以下就是 vue 所做的操作:
主要步骤:
- 从指令名中取出 事件名;
<button v-on:click="dianJi">按钮</button>
- 根据指令的值(表达式)从 methods 中得到对应的事件处理函数对象;
fn = vm.$options.methods && vm.$options.methods[dianJi];
- 给当前元素节点 绑定 指定的事件名 和 回调函数的 dom 事件监听;
node.addEventListener(click, dianJi.bind(vm), false);
- 指令解析完后,移除此指令属性;
我们的页面为:
<body>
<div id="app">
<p>{
{show}}</p>
<button v-on:click="dianJi">按钮</button>
</div>
<script src="./bil/mvvm.js"></script>
<script src="./bil/compile.js"></script>
<script src="./bil/observer.js"></script