自定义组件 isid vue js 对话框
Custom component iside vue js dialog
我正在使用这个 vue js 插件:https://github.com/Godofbrowser/vuejs-dialog
按照指南,我正在尝试将自定义组件集成到我的对话框中。对话框显示但没有内容或显示自定义组件。另外,配置好像不行。
我是不是漏掉了什么?我遵循了文档。
这是我的内容 main.js:
import VuejsDialog from 'vuejs-dialog';
import 'vuejs-dialog/dist/vuejs-dialog.min.css';
Vue.use(VuejsDialog);
import CustomView from '@/components/HDSLogin';
const customView = 'my-unique-view-name';
Vue.dialog.registerComponent(customView, CustomView)
然后我在我的组件中使用下面的方法来触发对话框
this.$dialog.alert( {
view: customView, // can be set globally too, value is 'my-unique-view-name'
html: false,
animation: 'fade',
okText: "Ok",
cancelText: "Cancel",
backdropClose: true
});
然后我在 HdsLogin.vue:
中定义了我的 CustomView
组件
<template>
<div >
<p>Content</p>
</div>
</template>
<script>
// import into project
import Vue from 'vue';
import VuejsDialog from 'vuejs-dialog';
import VuejsDialogMixin from 'vuejs-dialog/dist/vuejs-dialog-mixin.min.js'; // only needed in custom components
import 'vuejs-dialog/dist/vuejs-dialog.min.css';
Vue.use(VuejsDialog);
export default {
mixins: [VuejsDialogMixin],
};
</script>
<style scoped="">
button {
width: 100%;
margin-bottom: 10px;
float: none;
}
</style>
使用上述设置会显示一个空白对话框:
这个很难被发现。但是您在示例之后犯了一个小错字。
this.$dialog.alert()
有2个参数,它的定义是:
Plugin.prototype.alert = function (message = null, options = {}) {
message && (options.message = message)
return this.open(DIALOG_TYPES.ALERT, options)
}
所以你必须先定义第一个参数(例如null
),然后再定义options
。
您的调用应该如下所示:
- this.$dialog.alert( {
+ this.$dialog.alert(null, {
view: customView, // can be set globally too
html: false,
animation: 'fade',
okText: "Ok",
cancelText: "Cancel",
backdropClose: true
});
此外,您的 HdsLogin
组件中可能不需要所有这些导入。
我正在使用这个 vue js 插件:https://github.com/Godofbrowser/vuejs-dialog
按照指南,我正在尝试将自定义组件集成到我的对话框中。对话框显示但没有内容或显示自定义组件。另外,配置好像不行。
我是不是漏掉了什么?我遵循了文档。
这是我的内容 main.js:
import VuejsDialog from 'vuejs-dialog';
import 'vuejs-dialog/dist/vuejs-dialog.min.css';
Vue.use(VuejsDialog);
import CustomView from '@/components/HDSLogin';
const customView = 'my-unique-view-name';
Vue.dialog.registerComponent(customView, CustomView)
然后我在我的组件中使用下面的方法来触发对话框
this.$dialog.alert( {
view: customView, // can be set globally too, value is 'my-unique-view-name'
html: false,
animation: 'fade',
okText: "Ok",
cancelText: "Cancel",
backdropClose: true
});
然后我在 HdsLogin.vue:
中定义了我的CustomView
组件
<template>
<div >
<p>Content</p>
</div>
</template>
<script>
// import into project
import Vue from 'vue';
import VuejsDialog from 'vuejs-dialog';
import VuejsDialogMixin from 'vuejs-dialog/dist/vuejs-dialog-mixin.min.js'; // only needed in custom components
import 'vuejs-dialog/dist/vuejs-dialog.min.css';
Vue.use(VuejsDialog);
export default {
mixins: [VuejsDialogMixin],
};
</script>
<style scoped="">
button {
width: 100%;
margin-bottom: 10px;
float: none;
}
</style>
使用上述设置会显示一个空白对话框:
这个很难被发现。但是您在示例之后犯了一个小错字。
this.$dialog.alert()
有2个参数,它的定义是:
Plugin.prototype.alert = function (message = null, options = {}) {
message && (options.message = message)
return this.open(DIALOG_TYPES.ALERT, options)
}
所以你必须先定义第一个参数(例如null
),然后再定义options
。
您的调用应该如下所示:
- this.$dialog.alert( {
+ this.$dialog.alert(null, {
view: customView, // can be set globally too
html: false,
animation: 'fade',
okText: "Ok",
cancelText: "Cancel",
backdropClose: true
});
此外,您的 HdsLogin
组件中可能不需要所有这些导入。