【发布时间】:2021-08-07 15:58:06
【问题描述】:
所以我正在开发一个带有 Rest API 的 Vue 项目,我正在努力在对象中设置一个对象。
我的 vue 页面
<template>
<div class="submit-form">
<div class="form-group">
<label for="name">Party Name</label>
<input
class="form-control"
id="name"
required
v-model="party.name"
name="name"
/>
</div>
<div class="form-group">
<label for="description">Description</label>
<input
class="form-control"
id="description"
required
v-model="party.description"
name="description"
/>
</div>
<div class="form-group">
<label for="PartyLeaderName">PartyLeader Name</label>
<input
class="form-control"
id="partyLeaderName"
required
v-model="party.partyLeaderName"
name="partyLeaderName"
/>
</div>
<button @click="saveParty" class="btn btn-success">Submit</button>
<p>{{message}}</p>
<!-- <div>-->
<!-- <button class="btn btn-success" @click="newParty">Add</button>-->
<!-- </div>-->
</div>
</template>
<script>
import PartyDataService from "@/services/PartyDataService";
import PartyLeaderDataService from "../../services/PartyLeaderDataService";
export default {
name: "AddParty",
data() {
return {
party: {
id: null,
name: "",
description: "",
ispartynational: true,
partyLeader:{}
},
message:""
};
},
methods: {
saveParty() {
var data = {
name: this.party.name,
description: this.party.description,
ispartynational: true,
partyLeader: this.party.partyLeader
};
PartyLeaderDataService.findByName("Marije")
.then(response => {
this.party.partyLeader = response.data.partyLeader;
console.log(response.data);//partyleader json correct
})
.catch(e => {
console.log(e);
});
console.log(data)
PartyDataService.create(data)
.then(response => {
this.party.id = response.data.id;
console.log(response.data);
this.message = 'The Party was created successfully!';
})
.catch(e => {
console.log(e);
});
},
newParty() {
this.party = {};
},
}
}
</script>
<style>
.submit-form {
max-width: 300px;
margin: auto;}
</style>
问题是在这部分代码中:
data() {
return {
party: {
id: null,
name: "",
description: "",
ispartynational: true,
partyLeader:{}
},
除了partyLeader 属性外,所有格式都正确,这不会像邮递员示例中那样设置。 我已经得到了以下代码:
PartyLeaderDataService.findByName("Marije")
.then(response => {
this.party.partyLeader = response.data;
console.log(response.data);//partyleader json correct
})
.catch(e => {
console.log(e);
});
我的控制台日志显示这段代码的输出是这样的:
{id: 6, name: "Marije", appearance: "Link"}
这是我想要的。现在的问题是我如何将它传递给 partyLeader 属性? 提前致谢!
已添加
当我把代码改成这样时:
PartyLeaderDataService.findByName("Marije")
.then(response => {
console.log(response.data) //{id: 6, name: "Marije", appearance: "Link"}
this.party.partyLeader = response.data;
console.log(response.data); //{__ob__: Observer}
})
.catch(e => {
console.log(e);
});
我不知道为什么
更新
但好像和这个不一样:
{
"id": 5,
"name": "Visual",
"description": "new party",
"ispartynational": true,
"partyLeader": {
"id": 5,
"name": "Marijke",
"appearance": "Link of image"
}
}
如何使它像邮递员格式(只有partyLeader格式错误)?
【问题讨论】:
-
您当前有
partyLeader:[]作为数组,首先将其更改为partyLeader:{}。然后尝试记录以控制台this.party.partyLeader的值。 -
this.party.partyLeader.push(response.data) -
您好,您正在使用
response.data.partyLeader设置值,但在console.log 中您使用的是response.data。 -
当我这样做时,我的对象党领袖更改为以下内容:{ob: Observer}
-
另外,由于这是对象的赋值,所以赋值后this.party.partyLeader和reponse.data的引用可能相同。这就解释了为什么在第二个 console.log 中显示了一个 Observable,这是 vue.js 处理反应性的一种方式。您应该使用多种方法之一复制对象,而不是直接分配。
标签: javascript vue.js object properties postman