【问题标题】:Is it possible to use bootbox with Vue.js?是否可以在 Vue.js 中使用 bootbox?
【发布时间】:2019-07-04 19:16:04
【问题描述】:

我有一个小表单,其中是一个弹出窗口,其中包含可以通过复选框选择的选项。 我必须用 Vue.js 和 bootbox 来实现它。我正在使用 bootstrap-vue 插件。

当我运行它时,我收到以下错误消息:

"Uncaught SyntaxError: Unexpected token

“未捕获的错误:$.fn.modal 未定义;请仔细检查您是否包含了 Bootstrap JavaScript 库。有关详细信息,请参阅 http://getbootstrap.com/javascript/。bootbox.js:584”

我安装了 npm 包。我加了

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
<script src="bootbox.min.js"></script>

到我的 index.html 的正文。我添加了

var bootbox = require('bootbox');

到 *.vue 组件。

<script>
import JQuery from 'jquery'
let $ = JQuery
var bootbox = require('bootbox');

export default {
    name: 'eingabe',
    data: function () {
        return {
            kundeUebertrag: '',
            ergebniseins: '',
            ergebniszwei: '',
            ergebnisstring: '',
            ergebnisstring2: '',
            kundeNummer: '',
            bereichNummer: '',
            eventNummer: '',
            siteId: '',
            obj: '',
            ergarray: [],
            innerobj1: '',
            innerobj2: '',
            feldSichtbar: 'none'

        }
    },


    methods: {
        aufrufeins: function() {
            let vm = this;
            let neueDaten = document.formular;
            neueDaten.addEventListener('submit',function(evt) {
                evt.preventDefault();
            });

            vm.kundeUebertrag = vm.kundeMatomo;
            $.getJSON("/api/pruefung.php", { kundeUebertrag: 
                this.kundeUebertrag}, function (result) {
                vm.ergebniseins = result;                           
                vm.ergebnisstring = vm.ergebniseins[0];               
                vm.ergebnisstring2 = vm.ergebnisstring.returnmeldung;
                vm.obj = JSON.parse(vm.ergebnisstring2);
                if(vm.obj.status == "neuanlage")
                {
                    vm.siteId = vm.obj.siteid;
                }
                if(vm.obj.status == "rueckfrage")
                {
                    for (var prop in vm.obj)
                    {
                        vm.innerobj1 = vm.obj[prop][0];
                        for (var props in vm.innerobj1)
                        {
                            vm.innerobj2 = vm.innerobj1[props][0];
                            console.log(vm.innerobj2.kunde)
                            vm.ergarray.push(vm.innerobj2);

                        }
                    }
                    vm.ergebniseins = vm.ergebnisstring2;               
                    vm.feldSichtbar = 'block';
                    bootbox.prompt({
                        title: "Bitte einen Kunden auswählen",
                        inputType: 'checkbox',
                        inputOptions: [
                            {
                                text: 'Choice One',
                                value: '1',
                            },
                            {
                                text: 'Choice Two',
                                value: '2',
                            },
                            {
                                text: 'Choice Three',
                                value: '3',
                            }
                        ],
                        callback: function (result) {
                            console.log(result);
                        }
                    });

                }
            });
        },


    }
}
</script>

我希望会出现引导箱,但什么也没有出现。只有错误消息。 通常可以将 Vue.js 与 bootbox 一起使用吗?我该怎么办?

【问题讨论】:

    标签: vue.js vuejs2 vue-component bootbox


    【解决方案1】:

    首先,您混合了不同类型的“包含”语句(importrequire)。你应该坚持一个。

    您声明您使用 bootstrap-vue,但您仍然包含“vanilla”Bootstrap javascript 文件。这似乎是错误的。另外,我不认为 bootstrap-vue 使用 jQuery,所以它可能无法很好地与 bootbox 配合使用。

    最后,您复制了 jQuery 和 bootbox 的“加载”。它们都通过 Node 和script 标签“加载”。这是自找麻烦,因为这两个库将在不同的上下文中存在两次。您没有解释您的构建管道,但假设它是 Webpack,则应删除 script 标签以支持您的 js 应用程序中的“包含”。

    例如,我的 vue 应用程序对 Bootstrap 有以下声明:

    import 'bootstrap';

    【讨论】:

    • 我更正了导入的要求,但它仍然不起作用。 Bootstrap-vue 需要 jQuery。并且 bootbox 需要 Bootstrap 而不是 Bootstrap-vue。所以两者都需要。不能改变那个。 bootbox 的文档说,它需要通过脚本标签加载,所以我会坚持下去。
    • 我发现了错误。 vue 文件中缺少“require('bootstrap')”
    猜你喜欢
    • 2021-05-10
    • 1970-01-01
    • 2019-04-30
    • 2015-11-02
    • 1970-01-01
    • 2019-10-12
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多