注意:所有指令相关函数的this都是window。
定义语法:
配置对象中常用的三个回调:
备注:
- <body>
- <div id="root">
- <!-- 指令如果是多个单词组成,中间用 - 隔开 -->
- <h1 v-big-number="num"></h1>
- <button @click="num++">点我加一</button>
- <input type="text" v-fbind:value="num">
- </div>
- </body>
- <script type="text/javascript">
-
- new Vue({
- el: "#root",
- data: {
- num: 10
- },
- directives: {
- // haha函数何时会被调用,1.指令与元素成功绑定时(一上来) 绑定后才会渲染到页面。2.指令所在的模板被重新解析时
- // element为自定义指令所在的标签的真实DOM,binding为自定义指令中的值
- "big-number"(element, binding) {
- element.innerText = binding.value * 10;
- },
-
- // 自定义指令的完整写法
- fbind: {
- //指令与元素成功绑定时执行
- bind(element, binding) {
- element.value = binding.value;
- },
- //指令所在的元素被插入到页面时
- inserted(element, binding) {
- element.focus();
- },
- //指令所在的模板重新解析时
- update(element, binding) {
- element.value = binding.value;
- element.focus();
- }
- }
- }
- })
- </script>
- <body>
- <div id="root">
- <!-- 指令如果是多个单词组成,中间用 - 隔开 -->
- <h1 v-big-number="num"></h1>
- <button @click="num++">点我加一</button>
- <input type="text" v-fbind:value="num">
- </div>
- </body>
- <script type="text/javascript">
-
- // 设置全局指令
- Vue.directive("fbind", {
- //指令与元素成功绑定时执行
- bind(element, binding) {
- element.value = binding.value;
- },
- //指令所在的元素被插入到页面时
- inserted(element, binding) {
- element.focus();
- },
- //指令所在的模板重新解析时
- update(element, binding) {
- element.value = binding.value;
- element.focus();
- }
- })
-
- Vue.directive("big-number", function (element, binding) {
- element.innerText = binding.value * 10;
- })
-
- new Vue({
- el: "#root",
- data: {
- num: 10
- }
- })
- </script>
f