首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在vue.js中不触发onclick事件

在vue.js中不触发onclick事件
EN

Stack Overflow用户
提问于 2018-10-17 09:47:45
回答 3查看 3.3K关注 0票数 1

我有以下Vue.js模板:

代码语言:javascript
运行
AI代码解释
复制
<script type="text/x-template" id="ti-page-inquire">
    <div>
        <h3 class="mdc-typography--headline3">{{page.name}}</h3>
        <ti-button v-bind:button="page.button" v-on:click="onSubmit"></ti-button>
    </div>
</script>

<script type="text/x-template" id="ti-button">
    <button class="mdc-button mdc-button--raised" v-bind:title="button.name">{{button.name}}</button>
</script>

脚本

代码语言:javascript
运行
AI代码解释
复制
    Vue.component('ti-page-inquire', { 
        props: ['page'],
        template: '#ti-page-inquire',
        methods : {
            onSubmit : function() {
                alert(1);             
            }
        }
    });

    Vue.component('ti-button', {
        props: ['button'],
        template: '#ti-button',
        mounted: function () {
            // ripple on button
            mdc.ripple.MDCRipple.attachTo(this.$el);
        }
    });

当我点击我的自定义按钮时,什么都不会发生。我认为这是因为它在onSubmit组件中寻找ti-button,但是如何让它在ti-page-inquire组件中查看呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-17 10:24:37

组件是黑匣子,您应该捕捉其中的所有事件并将它们发送到外部世界。

小提琴例子

代码语言:javascript
运行
AI代码解释
复制
Vue.component('ti-button', {
    props: ['button'],
    template: '#ti-button',
    mounted: function () {
        // ripple on button
        mdc.ripple.MDCRipple.attachTo(this.$el);
    },
    methods: {
      buttonClicked: function() {
        this.$emit('button-clicked');
      }
    }
});


<script type="text/x-template" id="ti-page-inquire">
    <div>
        <h3 class="mdc-typography--headline3">{{page.name}}</h3>
        <ti-button v-bind:button="page.button" v-on:button-clicked="onSubmit"></ti-button>
    </div>
</script>

<script type="text/x-template" id="ti-button">
    <button class="mdc-button mdc-button--raised" v-bind:title="button.name" @clicked="buttonClicked">{{button.name}}</button>
</script>
票数 3
EN

Stack Overflow用户

发布于 2018-10-17 10:13:44

这可能是因为您需要侦听本机单击事件。所以您需要使用.native修饰符。

代码语言:javascript
运行
AI代码解释
复制
<ti-button v-bind:button="page.button" v-on:click.native="onSubmit"></ti-button>

只有当按钮是ti-button组件的根元素时,这才能工作。否则,您必须将事件侦听器传递给ti-button组件中的按钮,如下所示。

代码语言:javascript
运行
AI代码解释
复制
<button v-on="$listeners" ...> ... </button>
票数 1
EN

Stack Overflow用户

发布于 2018-10-17 10:09:52

尝试通过使用ti-button函数将事件从ti-button组件发出到父组件:

代码语言:javascript
运行
AI代码解释
复制
Vue.component('ti-button', {
  props: ['name'],
  template: '#vButton',

  data: {
    name: 'hi'
  },
  methods: {
    submit() {
      this.$emit('submit')
    }
  }
});
代码语言:javascript
运行
AI代码解释
复制
<template id="vButton">
    <button v-bind:title="name" @click="submit">{{name}}</button>
</template>

它在父组件(如v-on:submit="onSubmit" )中调用并使用onSubmit方法处理的发出的事件onSubmit

代码语言:javascript
运行
AI代码解释
复制
<script type="text/x-template" id="ti-page-inquire">
  <div>
    <h3 class="mdc-typography--headline3">{{page.name}}</h3>
    <ti-button v-bind:button="page.button" v-on:submit="onSubmit"></ti-button>
  </div>
</script>

  Vue.component('ti-page-inquire', { 
       props: ['page'],
       template: '#ti-page-inquire',
        methods : {
        onSubmit : function() {
            alert(1);             
         }
        }
    });

有时还需要发出一些参数,这样您就可以这样做:

代码语言:javascript
运行
AI代码解释
复制
    this.$emit('submit',params)

params可以是任何类型的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52860809

复制
相关文章
jsp button onclick事件汇总
<input onclick="document.all.WebBrowser.ExecWB(1,1)" type="button" value="打开" name="Button1"> <input onclick="document.all.WebBrowser.ExecWB(4,1)" type="button" value="另存为" name="Button2"> <input onclick="document.all.WebBrowser.ExecWB(10,1)" type="button"
week
2018/08/27
2.2K0
jQuery 双击事件(dblclick)时,不触发单击事件(click)
在jQuery的事件绑定中,执行双击事件(dblclick)时能触发两次单击事件(click)。即一个标签元素(如div等),如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblclick)时却会触发两次单击事件(click)。 先看一下点击事件的执行顺序:
飞奔去旅行
2019/06/13
5.4K0
Asp.Net回车键触发Button的OnClick事件解决方案
在aspx页面有textbox文本框,还有三个button按钮。启用textbox的TextChanged事件和button的click事件。 问题: 现在在textbox文本框输入完数据按“回车”后,会触发TextChanged事件,但同时还会触发该页面第一个button按钮的Click事件。 解决方法一: 当在文本框中敲回车的时候,表单提交。因为在.net中一个Page只有一个form表单。所以也就有一个Sumbit事件。 当UseSubmitBehavior的属性是True的时候,表单的提交就会触发此
磊哥
2018/04/26
2.3K0
select的onchange事件和onclick事件区别
一句话理解,onchange是当发生改变时触发事件,onclick当被点击时触发事件
JaneYork
2023/10/11
8270
select的onchange事件和onclick事件区别
双击事件(dblclick)时,不触发鼠标按下(mousedown) 动作事件
在一个dom节点的事件绑定中,如果同时绑定了dblclick和mousedown那么想要执行双击事件(dblclick)时能就会触发两次mousedown事件。
李维亮
2023/10/23
7840
双击事件(dblclick)时,不触发鼠标按下(mousedown) 动作事件
onmousedown、onmouseup 以及 onclick 事件分享
这是常用的解决方案:找到您希望删除的子元素,然后使用其 parentNode 属性来找到父元素:
用户7718188
2021/10/07
2.2K0
vue中在父组件点击按钮触发子组件的事件
1、父组件的button元素绑定click事件,该事件指向notify方法 2、给子组件注册一个ref=“child” 3、父组件的notify的方法在处理时,使用了$refs.child把事件传递给子组件的parentMsg方法,同时携带着父组件中的参数msg 4、子组件接收到父组件的事件后,调用了parentMsg方法,把接收到的msg放到message数组中
江一铭
2022/06/16
6.3K0
Jenkins触发构建--事件触发
事件触发就是发生了某个事件就触发pipeline执行,这个事件可以是你能想到的任何事件,比如手动在界面上触发、其它job主动触发、HTTP API Webhook触发等。
陈不成i
2021/06/02
5.9K0
自定义事件在 Vue.js 组件中的应用
Vue.js 组件的自定义事件可以让子组件向父组件传递数据,非常方便实用。在使用自定义事件时,我们可以使用 v-on 来绑定事件,每个 Vue 实例都实现了事件接口,即使用 $on(eventName) 监听事件和使用 $emit(eventName) 触发事件。此外,在父组件中,我们可以使用 v-on 来监听子组件触发的事件。
iOS程序应用
2023/03/15
4K0
自定义事件在 Vue.js 组件中的应用
代码触发,手动触发touchstart事件,touch事件,click事件,自定义事件
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/150775.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
4.9K0
js动态生成html,onclick事件无效
$(".aaa").click(function () { alert("测试"); }); 由于html代码是js动态生成的,所以需要用这种方式
黄啊码
2021/09/26
7.3K0
微信小程序中 scroll-view触底事件不触发的解决方法
scroll-view组件是否设置了确定的高度,若没有请设置 scroll-view组件的 lower-threshold 参数是否带了单位,若带了单位如 px、rpx等,请去除,只使用数值。 若设置了上面两项还是没有效果,将 scroll-view的高度设置为具体的数值,如:100px 其他事件的设置类似触底事件
渔父歌
2018/09/26
4.5K0
小程序中点击子元素事件而不触发父元素的点击事件
在测试小程序的时候,发现了这样的一个bug,点击子元素事件d的时候触发父元素的点击事件,从而执行父级的点击事件,跳转到了父级的点击事件的页面了。
王小婷
2019/02/21
6.1K0
小程序中点击子元素事件而不触发父元素的点击事件
ios touchesBegan不触发
今天简单写了一个touchesBegan,发现无法触发,点击无效,网上找了半天没有效果。 最终发现问题是uiimageview需要开启交互:
全栈程序员站长
2022/09/15
6890
ios touchesBegan不触发
javascript中onclick(this)用法和onclick(this.value)用法介绍
2.onclick(this)代码详解 一般标签中会使用href和onclick两种方式来进行进行页面跳转或执行动作,但是小编一般都会使用onclick来进行执行Ajax函数进行跳转,并同时使用οnclick=”xxxxxx(this)”来传递动态参数:例子如下
全栈程序员站长
2022/07/08
1.8K0
select标签添加onclick()事件的兼容写法
以上代码片是可以在Firefox和IE9下运行的,但是它在我的360浏览器上就是无效的,究其原因还是IE版本的问题(存在兼容性问题), 也就是:老版本只能这样 <select onclick() ></select>
ZONGLYN
2019/08/08
7.8K0
jquery中失去焦点事件_easyui失去焦点事件没触发
事件会在获得焦点的时候触发,既可以是鼠标行为,也可以是按tab键导航触发的行为,并且绑定一个处理方法。
全栈程序员站长
2022/09/20
4.9K0
onbeforeunload事件_pageload事件何时触发
注意:为了防止不需要的弹出窗口,浏览器可能不会显示在beforeunload事件处理程序中创建的提示,除非页面已与之交互,甚至根本不显示它们。
全栈程序员站长
2022/11/03
3K0
点击加载更多

相似问题

Vue.js - onclick事件不会触发

137

反应onClick事件不触发

21

OnClick事件不绑定/触发

11

IE中不触发ImageButton OnClick事件

13

Spark按钮不触发onClick事件

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文