Vuejs: как использовать `v-b-modal directive` в BootstrapVue?

Вот мой код (ОШИБКА):

<template lang="pug">
  .component-root
    b-btn(v-b-modal.myModal)
      i.fa.fa-calendar
    b-modal#myModal
      span Hello this is my modal!
</template>

он выводит сообщение об ошибке:

[Vue warn]: Property or method "v" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.

Когда я использую метод $refs для создания модального окна, он работает:

<template lang="pug">
  b-button(@click="showModal")
    i.fa.fa-calendar
  b-modal(ref="myModalRef" hide-footer title="some title")
    span Hello form my modal
</template>

<script>
  ...
  methods: {
    showModal() {
      this.$refs.myModalRef.show();
    },
  }
  ...
</script>

Вот мой основной App.js с установленным BootstrapVue

import 'bootstrap-vue/dist/bootstrap-vue.css';
import 'font-awesome/css/font-awesome.min.css';

import Vue from 'vue';
import Moment from 'vue-moment';
import BootstrapVue from 'bootstrap-vue';
import DatePicker from 'vue2-datepicker';

import './assets/bootstrap.cosmo.min.css';

import App from './App';
import router from './router';

Vue.config.productionTip = false;
Vue.use(BootstrapVue);
Vue.use(Moment);
Vue.use(DatePicker);

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>',
});

Я просто следую руководству здесь: https://bootstrap-vue.js.org/docs/components/modal/ Пока у меня проблема, пока я не хочу показать модальный.

Что со мной не так?


person DennyHiu    schedule 06.03.2018    source источник
comment
Вы знаете, что это v? Отображает ли этот шаблон мопса какой-либо атрибут со значением v?   -  person acdcjunior    schedule 06.03.2018
comment
@Bhojendra: Что? как это дубликат ??? Он находится в asp.net и вообще не имеет ссылки ни на какие модальные окна BootstrapVue.   -  person DennyHiu    schedule 06.03.2018
comment
@acdcjunior: я просто следую этому руководству с собственного веб-сайта BootstrapVue bootstrap-vue.js.org / docs / components / modal   -  person DennyHiu    schedule 06.03.2018


Ответы (1)


Проблема в мопсе. В:

<template lang="pug">
  .component-root
    b-btn(v-b-modal.myModal)
      i.fa.fa-calendar
    b-modal#myModal
      span Hello this is my modal!
</template>

Линия:

b-btn(v-b-modal.myModal)

Все портит. Использование:

b-btn(v-b-modal.myModal="")

Причина:

b-btn(v-b-modal.myModal) создает <b-btn v-b-modal.myModal="v-b-modal.myModal">, что заставляет Vue искать этот файл. Использование b-btn(v-b-modal.myModal="") создает <b-btn v-b-modal.myModal="">, что решает проблему.

Подробнее: https://github.com/pugjs/pug/issues/370#issuecomment-2399051

person acdcjunior    schedule 06.03.2018