【发布时间】:2020-07-30 05:58:04
【问题描述】:
我有一个如下所示的输入字段:
<tr v-for="(item, index) in collection">
...
<input
type="checkbox"
v-model="item.activated"
@change="toggleSwitch(item.resource_url, 'activated', item)">
>
...
</tr>
collection 是一个包含多个键的数组,activated 是其中之一。 activated 等于 1 或 0,因为数据来自 mysql 数据库。问题是在这种情况下输入字段总是设置为 true,即使 activated 等于 1 或 0。
现在,我尝试像这样编写 v-model 来解决问题:
v-model="!!+item.activated"
通过添加!!+,我会将整数值转换为布尔值并使用它。这解决了问题,但产生了另一个问题。我这样做的另一个问题是,当我尝试更改已检查的输入时出现错误:
[Vue warn]: Cannot set reactive property on undefined, null, or primitive value: false
admin.js:120238 TypeError: Cannot use 'in' operator to search for 'activated' in false
toggleSwitch 方法如下所示:
toggleSwitch: function toggleSwitch(url, col, row) {
var _this8 = this;
axios.post(url, row).then(function (response) {
_this8.$notify({ type: 'success' });
}, function (error) {
row[col] = !row[col];
_this8.$notify({ type: 'error' });
});
},
我是 Vue.js 的新手,知道如何调试它,我的问题可能来自哪里?我很乐意提供任何其他信息。
编辑:
这是我的组件
Vue.component('profile-edit-profile-form', {
mixins: [AppForm],
data: function() {
return {
form: {
...
activated: false ,
...
}
}
}
});
【问题讨论】:
-
能否请您展示如何在此组件中检索您的
collection? -
@Shizzen83 是的,抱歉,erm 集合的默认值为 null,我使用来自控制器的 ajax laravel/vue 请求填充它。
标签: javascript php html laravel vue.js