gpt4 book ai didi

javascript - 如何将数据传递到组件模板

转载 作者:行者123 更新时间:2023-11-28 03:39:14 25 4
gpt4 key购买 nike

目前我正在单个 vue 组件中定义多个组件模板。我已经将一些定义为字符串,但是如果它变得更复杂,它就会变得有些难以理解。因此,我让它返回一个单独的组件作为模板。但是我不确定如何将数据传递给组件。

这是我的 vue 组件中的组件模板之一的当前方法示例。它将模板作为字符串返回并呈现 html。

progessTemplate: function () {
return {
template: ('progessTemplate', {
template: `
<div id="myProgress" class="pbar">
<div id="myBar" :class="barColor" :style="{'width': width}">
<div id="label" class="barlabel" v-html=width ></div>
</div>
</div>`,
data: function () {
return { data: {} };
},
computed: {
width: function () {
if (this.data.SLA <= 20) {
this.data.SLA += 20;
}
return this.data.SLA + '%';
},
barColor: function(){
if(this.data.SLA > 60 && this.data.SLA <= 80){
return 'bar progressWarning';
}else if(this.data.SLA > 80){
return 'bar progressUrgent';
}
}
}
})
}
},

我想避免这种方法并调用一个单独的文件。

我将组件导入到我的 vue 文件中

    import QueryDetailTemplate from '../../ej2/queryDetailTemplate';

在我的主 vue 文件中,我有这个函数“QueryDetailTemplate”:

export default{
data(){
return{
data: [...],
QueryDetailTemplate: function(){
return {
template: QueryDetailTemplate,
props:{
test: 'Hello World',
},
};
},//end of QueryDetailTemplate
}//end of data
...
}

在我的 QueryDetailTemplate.vue 中,这是我的代码:

<template>
<div>
Heyy {{test}} //undefined
</div>
</template>
<script>
export default{
props: ['test'],

created(){
console.log(this.test); //shows undefined
}
}
</script>

它渲染了硬编码的“Heyy”,但没有获得“test”属性。

感谢任何指点

最佳答案

我不太确定你想要实现什么,但是......你应该将组件指定为组件,如下所示:

export default{
components: {
QueryDetailTemplate
},
data(){
return{
data: [...],
}
}

或者如果您想异步导入它:

import Vue from 'vue'

export default {
methods: {
import() {
Vue.component(componentName, () => import(`./${componentName}.vue`));
}
}
}

然后你可以在 main 中渲染它:

<query-detail-template
test='Hello World'>
</query-detail-template>

关于javascript - 如何将数据传递到组件模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57438105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com