【发布时间】:2019-12-17 16:05:43
【问题描述】:
目前我在一个 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>
它呈现的是硬编码的“嘿”,但它没有得到“测试”道具。
感谢任何指针
【问题讨论】:
-
为什么
QueryDetailTemplate是你主要组件的数据属性,你是如何渲染它的? -
@DecadeMoon 我正在为来自 Essential JS2 for Vue 库的数据网格组件实现一个详细信息行。
QueryDetailTemplate在此示例中将是detailTemplate(单击源代码查看代码)ej2.syncfusion.com/vue/demos/#/material/grid/… 在示例中,他们没有提及实际如何设置模板或如何将道具从主组件传递给子组件.
标签: javascript vue.js syncfusion