鼠标悬停函数在同一 Vue.js 函数上引用不同的 <div id>

Posted

技术标签:

【中文标题】鼠标悬停函数在同一 Vue.js 函数上引用不同的 <div id>【英文标题】:Mouse Hover function to refer different <div id> on same Vue.js function 【发布时间】:2020-03-16 14:35:28 【问题描述】:

我在定义 mouseover 属性的“.html”文件中有两个 div id。

<div id="app">
<img class="img-responsive img-full" v-bind:src="imgData" @mouseover="imgData = imgData_1">
</div>

<div id="app1">
<img class="img-responsive img-full" v-bind:src="imgData_c" @mouseover="imgData_c = imgData_a">
</div>

在我的 app.js 中,我提到了以下代码

var app = new Vue(
    el:'#app',
  data:
  imgData:'img/blog_grid_3.jpg',
  imgData_1:'img/blog_grid_1.jpg',
  imgData_2:'img/blog_grid_2.jpg'

)

var app1 = new Vue(
    el:'#app1',
  data:
  imgData_a:'img/blog_grid_1.jpg',
  imgData_b:'img/blog_grid_3.jpg',
  imgData_c:'img/blog_grid_2.jpg'

)

如果我将鼠标悬停在 div id="app" (1st 'div') 上的图像上然后 div id="app1" (2nd 'div') 上的图像发生变化,是否有可能?

【问题讨论】:

您可以在app1 中创建一个事件处理程序,并将其连接到app 中的偶数。 你也可以在这里使用指令。 【参考方案1】:

您可以在 Vue 实例中使用内置的事件总线。在第三个 Vue 实例上监听变化并发出事件。你只需要确保你可以在你的两个应用程序中访问这第三个 Vue 实例。这里有一篇文章可以阅读更多关于这个功能的信息:article

这是一个关于如何使用这种 EventBus 的示例:

const EventBus = new Vue();

// subscribe to the event 'some-event' and add a handler function
EventBus.$on('some-event', data => 
  console.log('"some-event" was called via event.');
  console.log(data);
);

// actually emit the event with some payload
EventBus.$emit('some-event',  test: 123 );
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"&gt;&lt;/script&gt;

您可能还想问自己是否真的需要运行两个独立的 Vue 实例。许多用例可以在同一个 Vue 实例中处理。您可能想查看有关组件和路由的主题。

组件之间的通信也可以使用全局状态。你可以例如使用 Vuex 将您的状态保存在一个位置,并从您的组件中访问此全局状态。

【讨论】:

以上是关于鼠标悬停函数在同一 Vue.js 函数上引用不同的 <div id>的主要内容,如果未能解决你的问题,请参考以下文章

在鼠标悬停时动态添加和删除类 - Vue.js

当鼠标悬停在项目上或项目之间时,显示不同颜色的拖放突出显示

12 js事件

如何通过将鼠标悬停在同一页面上的图像上来触发 CSS 动画按钮

jQuery 菜单下拉气泡

当鼠标悬停而不是 pyFLTK 中的小部件时如何调用函数?