【问题标题】:How can I include Vue.js code inside a Popper.js pop-up div?如何在 Popper.js 弹出 div 中包含 Vue.js 代码?
【发布时间】:2017-08-31 09:09:34
【问题描述】:

我有以下 Popper.js 弹出窗口,其中我有一个按钮,我想在该按钮上附加一个 Vue.js 点击事件。

但是,虽然点击事件在弹出窗口之外起作用,但它在弹出窗口之外不起作用。

我怎样才能让changeText() 也能在弹出窗口中工作?

https://jsfiddle.net/edwardtanguay/jxs5nmxs

HTML:

<div id="app">
  <div>
    Message: {{message}}
  </div>
  <div>
  <button @click="changeText()">outside works</button>
  </div>
  <hr/>
    <a href="#" 
       id="example" 
       class="btn btn-primary" 
       rel="popover"
       data-original-title="Test Form"
       data-content='
       <div class="form-group">
        <label for="exampleInputPassword1">Name</label>
        <input type="text" class="form-control">
       </div>
       <button @click="changeText()" class="btn btn-success">Submit</button>
       '>Fill out form</a>
</div>

JavaScript:

var vm = new Vue({
    el: '#app',
  data: function() {
    return {
        message: 'hello'
    }
  },
  methods: {
    changeText: function() {
        alert('test');
    }
  }
});

$(function () {
    $('#example').popover({html: true});
});

附录:

【问题讨论】:

    标签: vue.js popper.js


    【解决方案1】:

    它不起作用的原因是因为popover动态注入了它自己的html,显然Vue没有编译这个模板。

    你必须使用 popover 事件来克服这个问题,这有点 hacky 但我没有看到任何其他方式:

    var vm = new Vue({
      el: '#app',
      data: function() {
        return {
          message: 'hello'
        }
      },
      methods: {
        changeText: function() {
          alert('test');
        }
      },
      mounted: function() {
        var self = this;
        $('#example').popover({
            html: true
          })
          .on('hidden.bs.popover', function() {
            self.changeText()
          }).parent().delegate('.btn-success', 'click', function() {
            $('#example').popover('hide')
          });
      }
    });
    

    https://jsfiddle.net/vangj1uc/

    【讨论】:

    • 但是这段代码也有不想要的效果,当点击原来的“填写表单”按钮时也会执行changeText()函数,这实际上应该只是关闭弹出框。跨度>
    • 我只是给你举个例子说明如何执行,我不知道你的逻辑是什么,如果功能冲突,你可以使用2个不同的功能
    • 我正在尝试理解代码。你从哪里得到hidden.bs.popover?如果我将其更改为例如hidden.bs.popoverx,提交按钮隐藏弹出窗口。但我看不出hidden.bs.popover 指的是哪里。
    • 好的,找到了:hidden.bs.popover, "当弹出框完全隐藏时发生(CSS 转换完成后)"
    • 看起来有太多不起作用的东西,例如v-model 在弹出窗口中不起作用:jsfiddle.net/edwardtanguay/f4eavh7y
    猜你喜欢
    • 2021-06-26
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 2019-05-14
    • 2023-04-07
    • 2022-01-24
    相关资源
    最近更新 更多