gpt4 book ai didi

javascript - 如何用组件替换字符串(vue)

转载 作者:行者123 更新时间:2023-11-30 06:20:46 25 4
gpt4 key购买 nike

我有包含 ### 的字符串,我正在用数组值替换。现在我想将它们与组件一起使用,我创建了组件并且它可以工作,但我不知道如何在字符串中使用它。我不想手动包装它们,因为我不知道字符串会怎样,它可以有几个 ###。如果它有 2 个 ###,选项将有 2 个子数组。

更好的方法是什么?

代码:https://jsfiddle.net/tsobh4nu/

Vue.component('opt', {
template: `<label>
<span class="bold" v-for="(str,idx) in options">
{{str + " / "}}
</span>
</label>`,
props:{options: Array}
})

new Vue({
el: '#app',
data: {
str: "I have ### and you have a ###.",
options: [
['AAA', 'BBB', 'CCC'],
['XXX', 'YYY', 'ZZZ']
]
},
computed:{
replacedStr(){
let newStr = this.str;
this.options.forEach(option=>{
newStr = newStr.replace('###',this.concatenateOptions(option));
})
return newStr;
}
},
methods: {
concatenateOptions(strArr) {
let separator = "";
let strOptions = "";
strArr.forEach(word => {
strOptions += separator + word;
separator = " / ";
});
return strOptions;
}
}
})
.bold {
font-weight: bold
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<div id="app">
<p>I want something like this, but using components: </p>
{{replacedStr}}
<br>
<hr>
My Components:<br>
<opt :options="options[0]"></opt>
<br>
<opt :options="options[1]"></opt>
</div>

非常感谢。

最佳答案

这比较笼统,但我希望它能对某人有所帮助。在模板中添加动态组件:<component v-bind:is="processedHtml"></component> .

然后添加一个计算方法:

computed: {
processedHtml () {
let html = this.html.replace('[Placeholder]', '<my-component></my-component>');
return {
template: '<div>' + html + '</div>'
}
}
}

在哪里<my-component>是您的自定义组件和 this.html您的 HTML 内容是否包含占位符 [Placeholder] .

返回具有一个根节点的元素很重要。这就是为什么返回用 <div> 包裹的原因.

阅读有关此问题的更多高级教程 here in my blog .例如,将 Prop 传递给 <my-component>

关于javascript - 如何用组件替换字符串(vue),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53257153/

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