1.前端的页面布局是根据后台传的layout字段来生成的,通过vue <components> 标签,但是如果后台给的标签在前端这边没有注册过,必然会报错,所以我想获取页面已经注册过的组件和后台的接口做比对,然后只输出页面已经注册过的组件,网上有通过this.options.components来获取的,但是他是全部的,我需要是父组件里面注册的子组件列表
具体的代码应该是
html
<div id="app">
<component :is="item" v-for="item in items" :key="item"></component>
</div>
js
const A = { template: '<div>A</div>' }
const B = { template: '<div>B</div>' }
const C = { template: '<div>C</div>' }
const D = { template: '<div>D</div>' }
new Vue({
el: '#app',
data: {
items: [A,B,D]
},
components: {
A, B, C, D, E
}
})
item是根据后台接口生成的,万一后台给的标签里面没有ABCDE,给了个H,页面一脸懵逼,这个标签我没见过,就不会渲染了。。。
有没有其他方法,其他有同学说用v-if但是我不知道该怎么用
=。=最后我只能采用,自定义一个数组参数然后把注册的组件名字放进去,然后筛选。。。。。希望有更好建议的同学