laravel - 将数据从 PHP Twig 传递到 Vue 组件
问题描述
Vue 相对较新。喜欢它,但是各种来源的信息相互矛盾,这使得解决问题变得困难。
我的树枝文件中有以下代码:
<test-component data={{ test.jsonData() }}></test-component>
test.jsonData() 包含以下内容:
"{"name":"john","lastName":"doe"}"
到目前为止,一切都很好。我的 Vue 组件代码如下所示
<template>
<div class="test">{{ data }}</div>
</template>
<script>
export default {
props: {
data: {
type: String,
default: "{}"
}
},
mounted: function () {
console.log(this.data);
}
};
</script>
这会将数据打印为 json。现在,问题是,我怎样才能像 data.name 一样访问它?我需要改变什么?
解决方案
除非我误解了您的问题,否则您的组件将接收data
作为字符串的道具,即 json. 你可以尝试这样的事情:
<template>
<div class="test">{{ dataObj.name }}</div>
</template>
<script>
export default {
props: {
data: {
type: String,
default: "{}"
}
},
data: function() {
return {
dataObj: JSON.parse(this.data),
};
},
mounted: function () {
console.log(this.dataObj);
}
},
</script>
如果您将 JSON 字符串传递给组件,您似乎只需要解析它并将其存储为要在模板中使用的数据对象。您还可以通过这种方式从值中创建计算属性:
<template>
<div class="test">{{ dataObj.name }}</div>
</template>
<script>
export default {
props: {
data: {
type: String,
default: "{}"
}
},
computed: {
dataObj: function() {
return JSON.parse(this.data);
};
},
mounted: function () {
console.log(this.dataObj);
}
},
</script>
两者都应该允许您访问传入的 JSON 中的属性。
推荐阅读
- c# - 缺少 Visual Studio“REST Api 客户端”
- c# - 'ComputeShader 不包含 SetMatrix 的定义'
- ml.net - ML.NET:用于 csv 加载的类型推断?
- sql - 使用 pandas.read_sql 查询带参数的数据库
- xpath - 量角器 subLocator 管道
- sql - 查找每个 product_id 的最新 change_date 的 new_price
- c - 如何将字符串作为C中线程的参数传递
- django - Django - 特定项目的基于类的视图
- java - 创建 CSV 文件 Android
- java - 如何使用 Android 从 Cloud Firestore 中的地图中检索特定字段?