【问题标题】:Vue bootstrap <b-modal> not firing function @click eventVue bootstrap <b-modal> 不触发函数@click事件
【发布时间】:2020-05-30 19:50:36
【问题描述】:

我不想尝试将道具传递给&lt;b-modal&gt; 按钮,所以当我单击默认的“确定”按钮但我的模式似乎没有时,我只想在我的模式中调用signinUser() @click开火。

signinUser() 将在 @hidden 上触发。

我还试图阻止模式关闭,除非用户经过身份验证(这就是为什么我不希望它在 @hidden 上触发)

有人能指出正确的方向吗?

这是我使用 firebase 进行身份验证的组件:

<template>
  <div class="container">
    <b-modal id="signinModal" @click="signinUser($event)" v-model="modalShow" :no-close-on-backdrop="true">
      <input id="email" v-model="email" placeholder="email">
      <input id="pass" v-model="password" placeholder="password">
    </b-modal>
    <form v-on:submit.prevent class="cube" v-if="modalShow == false">
      <div>
        <input id="title" v-model="title" placeholder="title">
      </div>
      <div>
        <textarea id="body" v-model="body" placeholder="body"></textarea>
      </div>
      <div>
        <b-button id ="postbtn" @click="addpost($event)" variant="outline-success">Publish</b-button>
      </div>
    </form>
  </div>
</template>

<script>
const { fb, db } = require('../../fireconfig.js')

export default {
  name: 'AddPost',
  data: function() {
    return {
      title: '',
      body: '',
      modalShow: true,
      email: '',
      password: ''
    }
  },
  methods: {
    signinUser(e) {
      e.preventDefault()
      fb.auth().signInWithEmailAndPassword(this.email, this.password)
        .catch(function(error) {
          // Handle Errors here.
          var errorCode = error.code;
          var errorMessage = error.message;

          if (errorCode === 'auth/wrong-password' || errorCode === 'auth/invalid-email') {
            alert('password or email incorrect', errorCode, errorMessage);
            //do nothing an modal stays up
          } else {
            console.log('user successfully authenticated')
            this.modalShow = false
          }
        });
    },
  }
}
</script>

【问题讨论】:

  • 您真正希望@click 事件何时触发?什么时候打开模态?当您单击确定按钮时?当你的模态关闭?
  • 啊抱歉,我的意思是当我点击确定按钮时

标签: javascript vue.js bootstrap-vue


【解决方案1】:

使用@ok 代替@click:

<b-modal id="signinModal" @ok="signinUser($event)" v-model="modalShow" :no-close-on-backdrop="true">
  <!-- more code -->
</b-modal>

【讨论】:

  • 很好,不知道 bootstrap vue 有这些触发器。我假设取消调用只是 @cancel 呢?
  • 是的,取消使用@hidden
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 2018-10-04
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
相关资源
最近更新 更多