laravel - Laravel 雄辩的数据或简单的道具在 Vue.Js 中创建自定义 Vue-router 链接
问题描述
我有一个用 VUE 和 Laravel 制作的 SPA。
Laravel 返回 API 请求,VUE 使用接收到的数据创建前端。
在少数情况下,我有一些 HTML 代码由 API 引擎作为编译数据返回,其中包含链接。
我想在 vue 路由器中使用这些链接,但如果我返回具有如下代码的 API:
JSON 代码
{
comment: {
'bla <strong>bla</strong> bla <router-link :to="name:\'page\'">text</router-link>'
}
}
然后我在我的组件模板中使用 JSON 代码,例如:
<div v-html={comment}></div>
但这不是作为纯 HTML 呈现和返回的:我看到粗体但不是<a href='page'>text...
我需要的,但我得到<router-link...
的是纯文本。
简单的 JSFiddle 测试
这是我尝试复制问题的演示测试。如果您单击 Foo Link(顶部菜单),它会打开一个组件,其中包含带有 HTML 代码的道具数据。粗体显示正确,但未呈现路由器链接
data: {
msg: 'Hello World',
comment : '<div class="comment">This is a <strong>bold</strong> <br>
this should be a <router-link :to="{\'name\':\'home\'}">
router link</router-link></div>'
}
在这种情况下如何强制 vue-router 渲染?
解决方案
由我自己修复:https ://jsfiddle.net/uncoke/92x0jhr1/
这是我自己的修复:
带有链接的自定义数据:
{ team: "<a href=\"/club/"+team.id+"\" data-to='{\"name\": \"team\",\"params\":{\"teamId\":"+ team.id+"}}'>"+ team.team+"</a> "+userCode,
....}
点击监听器
mounted() {
window.addEventListener('click', event => {
let target = event.target;
if (target && target.href && target.dataset.to) {
event.preventDefault();
const url = JSON.parse(target.dataset.to);
//router.push({ name: 'user', params: { userId: '123' } })
this.$router.push(url);
}
});
}
推荐阅读
- java - 打印没有额外空白或行的二维数组
- html - 为什么添加 `sm-4` 会使嵌入视频的边距过宽?
- r - 格式化数据并使其正常运行的问题
- python - 获取每个分层熊猫系列的第一行
- flutter - 带有文本的图像全屏(_getTellText(text)扩展颤动
- c++ - 在 C++ 中声明函数的不同方法
- swift - SwiftUI:根据字符串长度动态更改字体大小
- python - Pyspark:如何从不同的文件夹中读取多个 csv?
- .net - 会话值在我的回调函数中为空,但重定向后可读
- react-native - 在 ReactNative 中使用 Modal 上的自定义值初始化状态的最佳方法是什么?