[英]Register a component to an existing Vue.js instance
我是 Vue.js 的新手。
我想注册一个本地组件,如此处所述:
https://v2.vuejs.org/v2/guide/components.html#Local-Registration
唯一的问题是我需要将组件注册到现有的Vue 实例,而不是在创建新实例时,例如:
const app = new Vue({
el: '#app'
});
app.component({
'my-component': {
template: '<div>A custom component!</div>'
}
});
我为此尝试了 Vue.extend,但它不起作用。
编辑:
为什么我需要这个:
我正在创建一个包含该组件的第 3 方包。 将要安装这个包的框架已经包含了 Vue.js 和一个 Vue 实例。 因此,如果我在框架的 JS 之前包含我的包的 JS,那么它会给我 Vue 是未定义的,如果我在框架的 JS 之后包含我的包的 JS,那么它会给我组件错误,因为它必须在 Vue 实例化之前注册。
全局组件应在新实例构造之前声明。
Vue.component('my-component-a', { template: '<div>A custom component A!</div>' }); Vue.component('my-component-b', { template: '<div>A custom component B!</div>' }); const app1 = new Vue({ el: '#app1', template: '<div><my-component-a /><my-component-b /><my-component-c /></div>', components: { MyComponentC: { template: '<div>A custom component C!</div>' } } }); const app2 = new Vue({ el: '#app2', template: '<div><my-component-b /><my-component-a /><my-component-c /></div>' });
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script> <div id="app1"></div> <div id="app2"></div>
您无权从您的 app2 中访问 C 组件
您不能将组件添加到这样的实例中。 您可以像往常一样将它们添加到 Vue 构造函数中:
Vue.component('my-component', {
template: '<div>A custom component!</div>'
});
const app = new Vue({
el: '#app'
});
在此处查看演示: https ://jsfiddle.net/Linusborg/kb9pbecq/
const app = new Vue({
el: '#app',
components: {
'my-component': {template: '<div>Text in component</div>'}
}
});
基本上,您不能在已经渲染的现有 Vue 实例中注册组件。但是您可以在 Vue 实例安装到 dom 元素之前注册组件。
// local component
var child = {
template: '<div>A custom component!</div>'
}
const app = new Vue({
el: '#app',
components: {
Child: child
}
})
或者
// global component
Vue.component({
'child': {
template: '<div>A custom component!</div>'
} })
先定义组件,然后实现它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.