【发布时间】:2019-08-20 17:03:52
【问题描述】:
点击提交按钮后,我尝试显示评论。评论数据保存到数据库,但我必须刷新页面,然后该评论将出现在页面上。我希望我的评论在点击提交按钮后立即出现。你能告诉我这个解决方案的语法吗?
<div class="form-group">
<h1>Review Here</h1>
<textarea
class="form-control mb-2"
rows="3"
v-model="getReview.getDescription"
></textarea>
<div class="row">
<div class="col-md-6">
<div id="ratings">
<div id="like" class="rating">
<input
type="radio"
value="5"
v-model="getReview.getRating"
>
<input
type="radio"
value="4"
v-model="getReview.getRating"
>
<input
type="radio"
value="3"
v-model="getReview.getRating"
>
<input
type="radio"
value="2"
v-model="getReview.getRating"
>
<input
type="radio"
value="1"
v-model="getReview.getRating"
>
</div>
</div>
</div>
<div class="col-md-6">
<button v-on:click="addNewReview()">Submit</button>
</div>
这是我的脚本。我尝试将新的评论数据推送到评论数组,但它不起作用
<script>
export default {
props: ["id", "usernow"],
data() {
return {
reviews: [],
orgData: {
name_org: "",
headerpic: "",
description: ""
},
getReview: {
getOrgId: this.id,
getUserId: this.usernow.id,
getRating: "",
getDescription: ""
}
};
},
mounted() {
this.getData();
},
methods: {
addNewReview() {
if (
this.getReview.getDescription != "" &&
this.getReview.getRating != 0
) {
axios.post("/api/reviews", {
org_id: this.getReview.getOrgId,
user_id: this.getReview.getUserId,
description: this.getReview.getDescription,
rating: this.getReview.getRating
});
this.getReview.getDescription = "";
this.getReview.getRating = 0;
alert("OK");
} else {
alert("Please Review and rate this");
}
},
getData() {
axios.get("/api/listorgs/" + this.id).then(response => {
var ArrayData = response.data;
this.orgData = ArrayData.ListOrg;
this.reviews = ArrayData.Review.map(review => {
return {
description: review.description,
user: review.user,
rating: review.rating,
created_at: review.created_at
};
});
});
}
}
};
</script>
【问题讨论】:
-
将
.then添加到axios.post,然后您可以再次调用getData或更简单地只需.push一个新对象到包含新信息的reviews 数组中。跨度>
标签: javascript arrays laravel vue.js render