vue怎么获取option的自定义属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue怎么获取option的自定义属性相关的知识,希望对你有一定的参考价值。

参考技术A 假设有一个标签h5, 我们给它添加了一个自定义属性值,(item.id是从动态添加的)
点击h5 标签,如何才能获取当前对应的自定义属性值呢?
想当然的我最开始这样写:
<h5 class="left t-title" @click='getDataId' :data-id="item.id"></h5><script>
methods:
getDataId() console.log(this.data-id);

,
</script>

显然,这样是拿不到 data-id的值的。。。。
应该这样做:
<h5 class="left t-title" @click='getDataId(item.id)' :data-id="item.id"></h5><script>
methods:
getDataId(id) console.log(id);

,
</script>本回答被提问者采纳

Vue JS - vue 组件上的自定义属性会导致 TS 错误

【中文标题】Vue JS - vue 组件上的自定义属性会导致 TS 错误【英文标题】:Vue JS - custom properties on vue component gives TS errors 【发布时间】:2021-05-26 07:05:29 【问题描述】:

我已经创建了一些 Vue 中间件,我正在尝试向 Vue 中的一个组件添加自定义属性,如下所示:

middleware.js:

import  VueConstructor  from 'vue/types';
function eventPlugin(vue: VueConstructor): void 
  const Socket = new someClass();

  Object.defineProperties(vue.prototype, 
    $socket: 
      get: function get() 
        return Socket;
      ,
    ,
  );
  vue.$socket = Socket;

myComponent.js

const MyComponent = Vue.extend(
  name: 'MyComponent',
  $socket: 
    event(data: any) 

    
  ,
  methods: 
    MyMethod() 

    
  
)

app.js

import Vue from 'vue';
import eventPlugin from './middleware.js';
import MyComponent from './myComponent.js'
Vue.use(eventPlugin);

export default new Vue(
  render: (h) => h(MyComponent),
).$mount('#app');

我想在这里添加的自定义属性显然是socket。问题是当我添加它时,我得到打字稿错误:

对象字面量只能指定已知属性,而 'socket' 可以 'ComponentOptions>,记录<...>>'。

正如您在middleware.js 中看到的那样,我尝试在那里定义属性,所以我不确定为什么会收到错误消息?

【问题讨论】:

您显示的代码创建$socket,而不是sockets 向原型添加属性不会将其添加到组件选项中。它只是让你从组件上下文中访问属性(例如,this.$socket 在方法或钩子中)。 哦,好吧,有没有办法做到这一点? 【参考方案1】:

添加实例属性或组件选项时,还需要augment the existing type declarations。

基于Augmenting Types for Use with Plugins (Vue 2):

要键入提示 $socket 实例属性:

declare module 'vue/types/vue' 
  interface VueConstructor 
    $socket: string
  

要键入提示 $socket 组件选项:

import Vue from 'vue'

declare module 'vue/types/options' 
  interface ComponentOptions<V extends Vue> 
    $socket?: string
  

上面的类型声明应该放在src 目录中的.d.ts 文件中。如果使用 VS Code,任何新的 .d.ts 文件可能需要重新启动 VS Code 才能加载。

【讨论】:

以上是关于vue怎么获取option的自定义属性的主要内容,如果未能解决你的问题,请参考以下文章

vue 自定义组件的自定义属性

Jquery怎么获取select选中项 自定义属性的值

Vue JS - vue 组件上的自定义属性会导致 TS 错误

Jquery怎么获取select选中项 自定义属性的值

VSCode(Vetur) 无法识别组件中的自定义 Vue 属性

属性上的自定义属性 - 获取属性属性的类型和值