局部自定义命令引入问题!

来源:1-4 开发实现 Vue 中的自定义指令(2)

好帮手慕斯林

2021-03-24 12:14:13

相关代码:

 const directives = {
    pos: {
      mounted(el, binding) {
        el.style[binding.arg] = (binding.value + 'px');
      }
    }
  },
  const app = Vue.createApp({
    directives,
    data(){
      return{
        distance: 110
      }
    },
    template: `
      <div>
        <div v-pos:right="distance" class="header">
          <input />
        </div>
      </div>
    `
  });

问题描述:

1,代码中这样引入局部自定义有报错,感觉是引入的时候有问题,但不知道哪里错。

2,老师在讲实例中引入局部自定义指令的时候忒乱,所以产生两个问题:

①局部自定义const directives的时候,我看全局app.directive后面并没有加s,这个是说局部自定义指令const directives 这个directives是可以随意命名的?


②关于在 Vue.createApp实例中引入局部自定义指令的时候,在【开发实现 Vue 中的自定义指令(1)】5:45分的时候可以这样directives:directives,引入,然后在【开发实现 Vue 中的自定义指令(2)】9:26分的时候又说directives:{focust}这样这引入,所以我都不知啥问题了,希望明确点,谢谢!


写回答

1回答

好帮手慕星星

2021-03-24

同学你好,问题解答如下:

1、一段代码结束后应该是分号结尾(或者不写标点符号),不是逗号,否则会造成语法问题。修改:

http://img.mukewang.com/climg/605adb3109b9b42a07990276.jpg

http://img.mukewang.com/climg/605adb52097b93ec19200459.jpg

2、全局的指令directive不加s

http://img.mukewang.com/climg/605adc0e0983131b03490192.jpg

局部指令有一个directives的选项

http://img.mukewang.com/climg/605adc2509b8859d06750277.jpg

所以课程中为了方便,变量名称和选项名称一致了,写全是这样的

http://img.mukewang.com/climg/605adc8609dd34f008480357.jpg

如果想修改变量名称是可以的,选项值对应着就好。

3、这两种方式都可以,第一种是在外面定义了指令赋值给变量,然后在directives上挂载上,第二种是直接在directives选项上写指令 。哪种方便使用哪种即可。

也可以看看官方文档的解释:

https://vue3js.cn/docs/zh/guide/custom-directive.html#%E7%AE%80%E4%BB%8B


祝学习愉快!

0

0 学习 · 15276 问题

查看课程

相似问题