VueJS:@click.native.stop =“”可能吗?

2024-04-23

我在页面上有几个嵌套组件,其父组件具有@click.native执行。因此,当我单击子组件(位于父组件内部)占用的区域时,会执行两个单击操作(父组件和所有嵌套子组件)

<products>
   <product-details>
       <slide-show>
             <media-manager>
                  <modal-dialog>
   <product-details>
       <slide-show>
             <media-manager>
                  <modal-dialog>
 </products>

所以我有多个产品的列表,当我单击属于模式对话框的“画布”时 - 我也得到@click.native对 modal-dialog 所属的产品详细信息触发。如果有类似的东西就好了@click.native.stop="code", 这可能吗?

现在我必须这样做:

@click.native="clickHandler"
and then 

  methods: {
    clickHandler(e) {
      e.stopPropagation();
      console.log(e);
    }

code

<template>
  <div class="media-manager">
    <div v-if="!getMedia">
      <h1>When you're ready please upload a new image</h1>
      <a href="#"
         class="btn btn--diagonal btn--orange"
         @click="upload=true">Upload Here</a>
    </div>
    <img :src="getMedia.media_url"
         @click="upload=true"
         v-if="getMedia">
    <br>
    <a class="arrow-btn"
       @click="upload=true"
       v-if="getMedia">Add more images</a>
    <!-- use the modal component, pass in the prop -->
    <ModalDialog
      v-if="upload"
      @click.native="clickHandler"
      @close="upload=false">
      <h3 slot="header">Upload Images</h3>
      <p slot="body">Hello World</p>
    </ModalDialog>
  </div>
</template>

<script>
import ModalDialog from '@/components/common/ModalDialog';
export default {
  components: {
    ModalDialog,
  },
  props: {
    files: {
      default: () => [],
      type: Array,
    },
  },
  data() {
    return {
     upload: false,
    }
  },
  computed: {
    /**
     * Obtain single image from the media array
     */
    getMedia() {
      const [
        media,
      ] = this.files;

      return media;
    },
  },
  methods: {
    clickHandler(e) {
      e.stopPropagation();
      console.log(e);
    }
  }
};
</script>

<style lang="scss" scoped>
.media-manager img {
  max-width: 100%;
  height: auto;
}

a {
  cursor: pointer;
}

</style>

你查过说明书了吗?https://v2.vuejs.org/v2/guide/events.html https://v2.vuejs.org/v2/guide/events.html

@click.stop="" or @click.stop.prevent=""

所以你不需要使用这个

methods: {
    clickHandler(e) {
      e.stopPropagation();
      console.log(e);
    }
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VueJS:@click.native.stop =“”可能吗? 的相关文章

  • Vue 和 Jest 单元测试组件

    我是新来的Vue js 我从单元测试开始Jest 我不知道从哪里开始以及如何开始 我有这段 Vue 代码 我想使用 Jest 进行测试 任何提示或想法我都会非常感激 我读到我应该使用浅安装 from Vue 测试实用程序避免组件测试过程中出
  • Vue Native 始终执行 App.js 而不是 .vue

    我做了vue native安装的第一个过程 我正在遵循 入门 Hello world教程 https vue native io getting started html https vue native io getting starte
  • vue:如何使传递给组件的对象具有反应性?

    Codepen 演示 https codepen io lzl124631x pen PayPVp editors 1010 我有一个组件有一个location对象为props 我传入的参数是locations index 这是从 a 中选
  • 在 Vue 组件中定义用户定义的 getter

    我的问题与 Vue 相关 更具体地说是反应性和反应性 getter setter https v2 vuejs org v2 guide reactivity html https v2 vuejs org v2 guide reactiv
  • 如何限制“v-for”中元素的迭代

    我正在构建一个小型应用程序Vuejs 2 0我有大约 15 个迭代元素 我想限制v for仅 5 个元素 并且可以有更多按钮来显示整个列表 有没有可能 你可以试试这个代码 div div div div div div div div
  • Vue.js 2 - 从 body 标签中删除初始边距

    如果这是一个愚蠢的问题 我很抱歉 我对 Vue 还很陌生 我创建了一个 Vue 使用命令vue init webpack
  • 数据变量没有从 Vue.js 中使用 Vuex 的计算属性的观察者更新

    Fiddle https jsfiddle net mjvu6bn7 https jsfiddle net mjvu6bn7 我有一个计算属性的观察者 它依赖于 Vuex 存储变量 该变量是异步设置的 当这个计算属性发生变化时 我试图设置
  • Vue-Test-Utils 未知的自定义元素:

    我正在使用 Jest 利用 vue test utils 库运行我的测试 尽管我已将 VueRouter 添加到 localVue 实例 但它说它实际上无法找到 router link 组件 如果代码看起来有点奇怪 那是因为我使用的是 Ty
  • 为 v-html 添加 CSS 样式

    我想在 HTML 代码中添加样式v html 我尝试了几种解决方案 但没有任何功能 这是我的代码 模板 div class para div 脚本 export default data return value h2 TITLE h2 p
  • 如何使用 VueJS 将 API 中的数据存储在 localStorage 中

    我使用 VueJS 练习简单的 SPA 要求我监听 API 并将其一些数据保存在浏览器的 localStorage 中 但是我对 VueJS 仍然不是很有经验 所以我不知道如何获取特定数据并保存将其发送给 LS 以便登录用户稍后可以看到他们
  • vue组件设置child的数据值

    我正在使用 vue 轮播 https ssense github io vue carousel api https ssense github io vue carousel api 它运行良好 但我需要重置轮播 我可以看到当前页面有一个
  • 在Vue.js中,如何选择组件的节点元素? $refs 可能吗?

    因为我想选择组件的节点元素 所以我想也许我可以使用 refs Parent
  • 预渲染 vue.js 2.0 组件(类似于 vue 1 中的 this.$compile)

    我正在努力使可重复使用的组件网格堆栈 https github com troolee gridstack js 我找不到一种简单的方法来做类似的事情this compile方法来自vue 1 我见过这个example http codep
  • bootstrap-vue 与 b 表中的复选框相关的问题

    我在使复选框正常工作时遇到问题 为 选定 槽中的每一行呈现的复选框未绑定到正确的行 当您单击该复选框时 它将顶行的复选框设置为真 假位置 问题 1 如何将行复选框的真 假状态绑定到其行项目 我试图将其绑定到 data item select
  • VueJS 将类切换到表中的特定元素

    我似乎不知道如何在表中的特定项目上切换类 我使用 v for 循环数据并将其打印给用户 目标是当用户单击表内的特定元素时切换类 当我尝试添加 v bind class active isActive 时 它只是将该类添加到所有类中 而不是特
  • 如何在vue中覆盖materializecss sass变量?

    我想改变物化中的变量 变量 scss https github com Dogfalo materialize blob master sass components variables scss e g primary color col
  • 从vue中的api加载路由

    我正在尝试从我的 API 在 Vue 应用程序中加载路由 我尝试将数据推送到路由变量并使用 addRoutes 方法 但没有运气 我认为异步可能存在问题 但为什么 addRoutes 不起作用 这是我的代码 import Vue from
  • 组件内调用 Mixin 的方法(Vuejs)

    我无法从组件调用 mixin 方法 出现此错误this hello is not a function 我可以打电话hello 来自 Vue 实例 但我无法在组件内调用它 有什么事吗 div div
  • 仅当内容超过两行时显示只读/隐藏按钮

    我正在创建一个评论部分 类似于 youtube 的东西 并且我希望能够在 content 有多行时显示阅读更多 隐藏按钮 这就是我到目前为止所做的 我的阅读更多 隐藏按钮可以工作 因为我添加了一个计算的线夹 使内容仅在存在多行时才显示两行
  • 无法安装组件:模板或渲染函数未定义。组件导入失败

    我正在尝试复制 vue 教程示例 在这里找到 https v3 vuejs org guide component basics html passing data to child components with props https

随机推荐