vue.js - Vue插值在API获取的文本中不起作用
问题描述
通过 API 获取文本,文本中有 {{}} 中的实体,例如:
Some text {{rules}} other text
具有数据值:
rules: "some text"
但是这个值没有插值,显示:
Some text {{rules}} other text
谢谢你的回答
解决方案
考虑到上面的评论:
我有:模板:{{someText}} 有数据:data() { return { someText:"some text {{ myValue }} some text", myValue:"300", } },如何在模板中显示来自 myValue 的数据?
你不会在 Vue 中做这样的插值。双括号 ( {{}}
) 用于模板部分,而不是脚本。
看看这个片段:
new Vue({
el: "#app",
data() {
return {
someText: "some text {{ myValue }} some text",
myValue: "300"
}
},
computed: {
parsedSomeText() {
let ret = ''
if (/(\w+)(?= }})/g.test(this.someText)) {
let key = String(this.someText).match(/(\w+)(?= }})/g)[0]
if (Object.keys(this.$data).includes(key)) {
ret = this.someText.replace(/{{ (\w+) }}/g, this.$data[key])
}
}
return ret
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
myValue: {{myValue}}<br /> someText: {{someText}}<br />parsedSomeText: {{parsedSomeText}}
</div>
parsedSomeText()
我在计算属性中创建了一个小解析器,它非常粗略地替换了someText
数据属性中的双括号并返回修改后的字符串,以便让它在数据属性中工作。
我建议您查看收到的数据,并考虑另一种解决方案 - 或利用一些坚如磐石的解析技术在生产中使用它。
如果您无法避免以这种方式获取数据,那么您应该研究动态(运行时)编译(例如:https ://alligator.io/vuejs/v-runtime-template/ )和渲染函数(https:// /vuejs.org/v2/guide/render-function.html)。有了这些,您的 Vue 应用程序变得更加通用但更加复杂。
推荐阅读
- python - 如何为多面 xarray 图设置单个标题?
- javascript - JavaScript 破坏性映射函数
- postgresql - Prisma 如何查看数据库
- makefile - make: *** 没有指定目标,也没有找到 makefile。停止
- jquery - 在剑道网格中 - 编辑选项如何隐藏/显示保存按钮如果没有更改或一些更改然后显示
- ios - 如何检测 mapbox 地图中缩放级别的变化?
- sql - SQL Server FOR DELETE 触发器不适用于具有级联键的内部联接
- php - 具有开始和结束日期的时间段数组(按范围)
- mongodb - Monk - 为什么我的更新有时只有效?
- python - 添加 order_by 时 Django 管理员性能糟糕的 get_form 查询集过滤器