在Vue.js中获取对方法中元素的引用

如何获得在Vue.js中触发该方法的元素的引用?我有这样的HTML:

 <input type="text" v-model="dataField" v-bind:class="dataFieldClass" />

在我的Vue.js视图模型中,我有一个方法:

dataFieldClass: function () {
    // Here I need the element and get its ID
    // Pseudo code
    var elementId = $element.id;
}

我知道可以从事件(v-on:click)中获取元素,但这不是事件,这是一种根据viewmodel的少数条件为元素返回CSS类的简单方法。它也应该是可计算的,但是问题是相同的。

GilL2020/03/19 11:49:24

您可以通过三种方式获得对元素的引用

1.使用方法事件处理程序(doc

模板:

<input type="text" v-model="dataField" v-bind:class="dataFieldClass" />

脚本:

dataFieldClass: function (e) {
    const element = e.target;
}

2.使用内联处理程序(doc 模板:

 <input type="text" v-model="dataField" v-bind:class="dataFieldClass($event, otherArgument)" />

脚本:

dataFieldClass: function (e, otherArgument) {
    const element = e.target;
}

3.使用Refs(doc 模板:

 <input type="text" v-model="dataField" v-bind:class="dataFieldClass" ref="el"/>

脚本:

dataFieldClass: function () {
    const element = this.$refs.el;
}
阳光小哥2020/03/19 11:49:24

您可以从DOM事件对象获取引用。“ event.currentTarget”是引用分配了事件侦听器(vuejs方法)的元素的属性。

这是标准的DOM规范,但是您也可以在Vuejs中使用此属性。

dataFieldClass: function (event) {
    var elementId = event.currentTarget.id;
}
蛋蛋Itachi2020/03/19 11:49:24

也许您可以使用ref

<input type="text" v-model="dataField" v-bind:class="dataFieldClass" ref="el" />

并像这样使用它:

dataFieldClass: function () {
    var elementId = this.$refs.el;
}

请参阅此处的文档:https : //vuejs.org/v2/api/#ref