【发布时间】:2018-03-19 11:34:54
【问题描述】:
我正在使用 Laravel 和 Vue 制作一个篮子系统。我的 Vue 文件 cart.js 中有一个数据对象:
data: {
material: {
id: '',
qty: '1',
},
}
当点击产品页面上的“添加到购物车”按钮时,会调用以下函数:
addToBasket: function(){
var that = this;
var item = this.material;
this.$http.post('/api/buy/addToBasket', item).then(response => {
this.basketAddSuccess = true;
}, response => {
//error
});
}
但是,这会失败并出现 500 错误,因为据我所知,id 没有绑定到 Vue 实例。这是查看代码:
<form v-on:submit.prevent="addToBasket(material)">
<input type="hidden" v-model="material.id" v-bind:value="{{ $material->id }}">
<div class="form-group">
<label for="qty">Quantity</label>
<input class="form-control" name="qty" type="number" v-model="material.qty" v-bind:value="1">
</div>
<button class="btn btn-block btn-primary">@{{ buttonText }}</button>
</form>
Laravel 正在根据呈现的代码正确地注入值:
<input type="hidden" v-model="material.id" value="1">
但这并没有绑定到 Vue。我已经尝试了v-model 和v-bind 的所有排列(我知道你不应该在同一个输入上同时使用这两个 - 这只是一长串尝试中的最后一个),但似乎没有任何效果.救命!
【问题讨论】:
-
你有
addToBasket(material)但在你的函数定义中看不到参数。 -
@BhojendraNepal 谢谢 - 我已经修复了这个功能。但是还是没有解决值不绑定的问题……
-
v-model将覆盖value属性。您需要在数据中设置id。 -
@Bert 如果不是通过在表单字段中捕获它,我应该如何将 id 传递给数据?
-
我不是 laravel 人,但你正在渲染脚本,所以我希望它会类似于
data: { material: {id: {{ $material->id }}, ...}}。
标签: javascript laravel vue.js