vuejs2 - Vue - 使用 Vue.componet 或 Async 组件更改根组件
问题描述
我想要一个动态/异步组件,它将根据菜单点击加载。会有很多链接和组件。
我的问题是:
- 即使我使用 Vue.Component 全局注册也找不到测试组件
- root中的component1可以更改吗?如果可能,我将使用 Ajax 调用组件文件。
提前致谢。
索引.html
<script src="~/bundle/site.js"></script>
<div id="app">
<input type="button" v-on:click="changeComponent('test-component')" value="Click me"/>
<component v-bind:is="view"></component>
</div>
网站.js
import Vue from 'vue';
import axios from 'axios';
global.Vue = Vue;
global.axios = axios;
var vm = new Vue({
el: '#app',
data: {
view: 'component1'
},
components: {
'component1': {
template: '<div>Dynamic Component master</div>'
}
},
methods: {
changeComponent: function (parComp) {
this.component1 = parComp;
},
}
});
Vue.component('test-component', {
template: '<div v-on:click = "changeName()"><h1>{{msg}}</h1></div>',
data: function () {
return {
msg: "Test Componet"
}
},
methods: {
changeName: function () {
this.msg = "mouse clicked";
},
}
})
更新
- 将 vm = new Vue().... 更改为 global.vm = new Vue()....
- 调用 vm.changeComponent('test-component')
现在可以了。
Vue.options.components["test-component"] 可以访问它。
但test-component
不能在 html 中访问,例如:
<test-component></test-component>
解决方案
通过以下方式解决的问题:
- 将 vm = new Vue().... 更改为 global.vm = new Vue()....
- 在 new Vue() 之前声明 Vue.component('test-component'....
谢谢威尔逊
推荐阅读
- java - 如何正确书写“\”字符
- c# - 用项目填充 SelectableItemsView
- r - 优化求解器函数
- c - 使用 pmap 分析进程的内存映射。[堆]
- python - 如何将 subprocess.run 的输出保存到字符串中?
- mysql - SQL(?)如何从面包屑解析父类别以更新具有 parentID 的字段?
- oracle - 如何使用 SQL Developer 管理带有回滚的单元测试
- node.js - 通过模拟器连接时 Botkit 未经授权(Microsoft Bot Framework)
- java - 即使没有发生异常,@Retryable 也会多次调用
- c# - 使用 Visual Studio 2017 编译的 .exe 的 Windows 资源管理器文件属性“详细信息”选项卡中的文件版本 0.0.0.0