javascript - 使用 vuex 和 vue 的表单组件中可重用的下拉字段
问题描述
在我的表单组件中,有两个下拉字段。我已经采用这种方法来获取下拉项目。
- 使用不同的 url 获取不同下拉列表的项目并传递给相同的下拉服务。
- 使用服务和操作传递 url 和文本/值对以显示表单中每个下拉列表的项目。
这是获取不同下拉字段的不同下拉项的服务
export async function fetchItemsOfDrowdown(url) {
const resp = await http.get(url);
return resp.data;
}
为此的操作和突变(为下拉菜单设置项目文本/值对)
async fetchDropdownItems({ state, commit }, payload) {
if (!state.fieldItems[payload.key]) {
const items = await service.fetchItemsOfDrowdown(payload.url);
const parsedItems = [];
for (let i = 0; i < items.length; i += 1) {
const item = items[i];
parsedItems.push({
text: item[payload.text],
value: item[payload.value]
});
}
commit('DropdownFieldItems', {
key: payload.key,
items: parsedItems
});
}
}
我正在将此操作用于我的表单组件到创建的方法中。(EditFormComponent)
created() {
if (this.fields && Object.keys(this.fields).length > 0) {
const fieldKeys = Object.keys(this.fields);
for (let i = 0; i < fieldKeys.length; i += 1) {
const key = fieldKeys[i];
if (this.fields[key] && this.fields[key].uri) {
this.fetchDropdownItems({
key,
url: this.fields[key].uri,
text: 'value',
value: 'id'
});
}
}
}
},
这些是下拉字段的类型(EditFromComponent)
data: () => ({
fields : {
category_id: {
key: 'category_id',
label: 'Category',
uri: '/products/category',
value: '',
items: []
},
product_size: {
key: 'product_size',
label: 'Available Size',
value: '',
uri: '/products/${item_id}/category/${category_id}
items: []
}
}
});
这两个 uri 给出了两个响应有效载荷,如下所示
1. categories : [{"id": 1, "value":"Shoe"},{"id": 2, "value":"Clothing"}]
2. product size : [{ "category_name": "Shoe", sizes: ['7','8','9'] }]
这种方法工作正常,但由于有效载荷的结构(不在 id /value 对中),产品尺寸下拉列表未显示
如何解决这个问题?
解决方案
推荐阅读
- android - Android Wear 授权不起作用
- opengl - Qt3D:请求渲染
- php - Laravel 5.4 类型错误:函数参数太少。0 已通过,恰好 1 预期在
- ionic-framework - 离子如何像另一个平台一样设置 Sass 变量
- java - 主程序中的扫描程序 Java 线程
- three.js - 三.js 图像纵横比
- java - 构建失败时,maven-surefire-report-plugin 不生成report.html
- php - 如何将两个不同函数的参数值获取到不同函数中的另一个变量中?
- mysql - 在模式弹出窗口中获取值并更新,而无需在 codeigntier 中刷新页面
- python - Python/Redis 中的任务委托