Vue.js vue属性作为不带值的道具名称

Vue.js vue属性作为不带值的道具名称,vue.js,vuetify.js,v-tooltip,Vue.js,Vuetify.js,V Tooltip,我想传递一个没有任何纯值名称的属性。我希望名称根据道具动态变化 我想创建一个工具提示组件,该组件可以获得工具提示侧->左上右或底部。在v形工具提示中,没有属性边,所有边都是另一个没有值的属性。我希望它根据道具进行更改(side是一个变量-我的组件的道具) {{text}} 导出默认值{ 道具:{ 正文:{ 类型:字符串, 要求:正确, }, 一方:{ 默认值:“top”, }, }, } 我找不到使用prop作为酒店名称的方法有两件事你需要意识到。在Vue中,使用调用组件与使用调用组件相同。

我想传递一个没有任何纯值名称的属性。我希望名称根据道具动态变化

我想创建一个工具提示组件,该组件可以获得工具提示侧->左上右或底部。在v形工具提示中,没有属性边,所有边都是另一个没有值的属性。我希望它根据道具进行更改(side是一个变量-我的组件的道具)


{{text}}
导出默认值{
道具:{
正文:{
类型:字符串,
要求:正确,
},
一方:{
默认值:“top”,
},
},
}

我找不到使用prop作为酒店名称的方法

有两件事你需要意识到。在Vue中,使用
调用组件与使用
调用组件相同。布尔值基本上用于切换道具

您还可以使用
v-bind
语法动态更改绑定到组件的道具,而不使用道具名称,如所述

这意味着,如果父组件中有一个名为
side
的道具始终包含正确的一面,则可以创建一个包含所有要传递的道具的计算属性,然后在
v-tooltip
上使用
v-bind
传递道具:

<template>
  <v-tooltip v-bind="tooltipProps">
    <!-- Something -->
  </v-tooltip>
</template>

<script>
const validSides = [
  'top',
  'top left',
  'top center',
  'top right',
  // you get the idea
];

export default {
  props: {
    side: {
      type: String,
      default: 'top',
      validator(prop) {
        return validSides.contains(prop);
      }
    }
  },

  computed: {
    tooltipProps() {
      if (!validSides.contains(this.side)) {
        return {};
      }

      const propsNames = this.side.split(' ');
      const props = {};
      for (const propName of propsNames) {
        props[propName] = true;
      }

      return props;
    }
  }
}
</script>

常数有效边=[
"顶",,
“左上角”,
“上中锋”,
“右上角”,
//你明白了吗
];
导出默认值{
道具:{
一方:{
类型:字符串,
默认值:“top”,
验证器(道具){
返回validSides.contains(道具);
}
}
},
计算:{
tooltipProps(){
如果(!validSides.contains(this.side)){
返回{};
}
const propsNames=此边拆分(“”);
const props={};
for(属性名称的常量属性名称){
props[propName]=真;
}
返回道具;
}
}
}
<template>
  <v-tooltip v-bind="tooltipProps">
    <!-- Something -->
  </v-tooltip>
</template>

<script>
const validSides = [
  'top',
  'top left',
  'top center',
  'top right',
  // you get the idea
];

export default {
  props: {
    side: {
      type: String,
      default: 'top',
      validator(prop) {
        return validSides.contains(prop);
      }
    }
  },

  computed: {
    tooltipProps() {
      if (!validSides.contains(this.side)) {
        return {};
      }

      const propsNames = this.side.split(' ');
      const props = {};
      for (const propName of propsNames) {
        props[propName] = true;
      }

      return props;
    }
  }
}
</script>