c# - 将数据传递给 Vue.js 组件
问题描述
我在将数据传递给 vue 组件时遇到问题。
该.cshtml
文件如下所示:
@using Newtonsoft.Json;
@{
var myString = "Hello world";
var myJsonData = JsonConvert.SerializeObject(model);
}
<div id="gallery">
<Gallery my-jsonprop="@myJsonData"
:my-jsonprop2="@myJsonData"
my-text="Hello world"
:my-text2="@myString"
v-bind:my-text3="@myString"></Gallery>
</div>
...和Gallery.vue
组件是这样的:
<template>
<div>
<p>{{ test }}</p>
<p>{{ myJsonProp }}</p>
<p>{{ myJsonProp2 }}</p>
<p>{{ myText }}</p>
<p>{{ myText2 }}</p>
<p>{{ myText3 }}</p>
</div>
</template>
<script>
export default {
name: 'Gallery',
props: {
myJsonprop: {
type: Object,
required: true
},
myJsonprop2: {
type: Object,
required: true
},
myText: {
type: String,
required: true
},
myText2: {
type: String,
required: true
},
myText3: {
type: String,
required: true
}
},
computed: {
test() {
return "Foo bar"
},
}
};
</script>
...最后我的main.js
样子是这样的:
import Vue from "vue";
import Gallery from "../Gallery.vue"
new Vue({
el: '#gallery',
render: h => h(Gallery)
});
但是两个属性都没有传递给组件,而测试的计算值正在显示。我错过了什么吗?
解决方案
传递道具的正确方法是将 CamelCase 变量更改为破折号名称,因此在您的组件中将如下所示:
<Gallery :my-json-prop="@myJsonData"
:my-json-prop2="@myJsonData"
my-text="Hello world"
:my-text2="@myString"
v-bind:my-text3="@myString"></Gallery>
请注意,如果您传递一个 javascript 变量,您需要使用 'v-bind' 或在道具名称前添加一个冒号 (:)。
如果它只是一个纯文本,那么你不需要'v-bind'
my-text="Hello world"
更多细节请查看vue 官方文档
推荐阅读
- ios - 如何从 AppDelegate.swift 路由到任何视图控制器
- php - 写一个通用行
- python - 解决 Python RC4 密码代码中的索引错误
- node.js - moment().startOf('day')` 显示为`Moment<2020-05-01T00:00:00+02:00>`
- swift - 无法获得带有详细信息的 Stripe 付款 POST 响应 - Swift
- django - Django,如何在注释中修复浮点字段中的最大小数?
- amazon-web-services - 如何将以前的任务定义与 ECS 和 bitbucket 管道部署一起使用
- php - php中的3维数组
- design-patterns - 外观设计模式是否也只涉及类/模块或实际的 API 调用?
- opencv - 保存时图像为黑色,但打印时正常