以编程方式将控件添加到空数组时独立操作控件 - VueJS
Manipulating controls independently when they are added programmatically to an empty array - VueJS
我有一个空的,里面填满了用户的输入。添加这些项目(键入并按回车键)后,还会使用单选按钮获得选项列表(是和否)。我需要能够独立选择是或否。截至目前,因为它们都共享相同的 v-model,所以当我修改它们中的任何一个时,它们都会发生变化。我怎样才能把它挑出来?
这是我的代码:
<div id="q-app">
<div class="q-pa-lg">
<q-input
outlined
label="Enter App Number"
style="margin-bottom:20px"
color="primary"
square
dense
type="text"
v-model="applicationbarcode"
@change="addApplication">
</q-input>
<div class="group" v-for="(appItem, index) in appList" :key="index">
<span>Application #: {{appItem}}</span>
<q-option-group
v-model="issuegroup"
:options="issueoptions"
color="primary"
inline
></q-option-group>
</div>
</div>
new Vue({
el: '#q-app',
provide() {
const menu = {};
Object.defineProperty(menu, "appList", {
enumerable: true,
get: () => this.appList
});
return { menu };
},
data () {
return {
appList: [],
applicationbarcode: "",
issuegroup: null,
issueoptions: [
{
label: 'Yes',
value: 'op1'
},
{
label: 'No',
value: 'op2'
}
]
}
},
computed: {
appAdded() {
return this.appList[this.applicationbarcode].index;
}
},
methods: {
addApplication: function(index) {
this.appList.push(this.applicationbarcode);
this.applicationbarcode = "";
}
}
})
这里也有一个 PLAYGROUND 给你。
您需要存储单个项目的数据。最简单的方法(恕我直言)是将 appList
转换为对象数组(而不是字符串)
addApplication: function(index) {
this.appList.push({barcode: this.applicationbarcode, issuegroup: null});
this.applicationbarcode = "";
}
并更新模板以使用对象数组
<div class="group" v-for="(appItem, index) in appList" :key="index">
<span>Application #: {{appItem.barcode}}</span>
<q-option-group
v-model="appItem.issuegroup"
:options="issueoptions"
color="primary"
inline
></q-option-group>
</div>
或者,您可以为这些值设置另一个数组,但如果您想开始删除项目,您可能需要担心匹配 keys/indices。
你只需要将issuegroup
转换成字典即可。
issuegroup: {},
并更新模板以使用 appItem
作为键。
<q-option-group
v-model="issuegroup[appItem]"
:options="issueoptions"
color="primary"
inline
></q-option-group>
我有一个空的,里面填满了用户的输入。添加这些项目(键入并按回车键)后,还会使用单选按钮获得选项列表(是和否)。我需要能够独立选择是或否。截至目前,因为它们都共享相同的 v-model,所以当我修改它们中的任何一个时,它们都会发生变化。我怎样才能把它挑出来?
这是我的代码:
<div id="q-app">
<div class="q-pa-lg">
<q-input
outlined
label="Enter App Number"
style="margin-bottom:20px"
color="primary"
square
dense
type="text"
v-model="applicationbarcode"
@change="addApplication">
</q-input>
<div class="group" v-for="(appItem, index) in appList" :key="index">
<span>Application #: {{appItem}}</span>
<q-option-group
v-model="issuegroup"
:options="issueoptions"
color="primary"
inline
></q-option-group>
</div>
</div>
new Vue({
el: '#q-app',
provide() {
const menu = {};
Object.defineProperty(menu, "appList", {
enumerable: true,
get: () => this.appList
});
return { menu };
},
data () {
return {
appList: [],
applicationbarcode: "",
issuegroup: null,
issueoptions: [
{
label: 'Yes',
value: 'op1'
},
{
label: 'No',
value: 'op2'
}
]
}
},
computed: {
appAdded() {
return this.appList[this.applicationbarcode].index;
}
},
methods: {
addApplication: function(index) {
this.appList.push(this.applicationbarcode);
this.applicationbarcode = "";
}
}
})
这里也有一个 PLAYGROUND 给你。
您需要存储单个项目的数据。最简单的方法(恕我直言)是将 appList
转换为对象数组(而不是字符串)
addApplication: function(index) {
this.appList.push({barcode: this.applicationbarcode, issuegroup: null});
this.applicationbarcode = "";
}
并更新模板以使用对象数组
<div class="group" v-for="(appItem, index) in appList" :key="index">
<span>Application #: {{appItem.barcode}}</span>
<q-option-group
v-model="appItem.issuegroup"
:options="issueoptions"
color="primary"
inline
></q-option-group>
</div>
或者,您可以为这些值设置另一个数组,但如果您想开始删除项目,您可能需要担心匹配 keys/indices。
你只需要将issuegroup
转换成字典即可。
issuegroup: {},
并更新模板以使用 appItem
作为键。
<q-option-group
v-model="issuegroup[appItem]"
:options="issueoptions"
color="primary"
inline
></q-option-group>