当前位置: 首页 > 知识库问答 >
问题:

vue.js - Vant UI DropdownMenu 如何根据后端返回,自定义option属性名渲染呢?

吴飞语
2024-04-18

vant ui DropdownMenu 下拉菜单

如何可以自定义options里的属性名,根据后端返回的来渲染呢?
例:

option1: [  { name: '全部商品', id: 0 },],

修改成上面的属性名 渲染到页面上 有什么办法吗

<van-dropdown-menu>  <van-dropdown-item v-model="value1" :options="option1" />  <van-dropdown-item v-model="value2" :options="option2" /></van-dropdown-menu>
export default {  data() {    return {      value1: 0,      value2: 'a',      option1: [        { text: '全部商品', value: 0 },        { text: '新款商品', value: 1 },        { text: '活动商品', value: 2 },      ],      option2: [        { text: '默认排序', value: 'a' },        { text: '好评排序', value: 'b' },        { text: '销量排序', value: 'c' },      ],    };  },};

共有2个答案

宋建柏
2024-04-18

vant没有提供对应的修改方法,可以自己动手
1.后端修改字段名

2.前端修改字段名

this.option1.map(item => item.text = item.name )
怀刚毅
2024-04-18

你可以在后端返回数据后,在前端代码中遍历这些数据,将每个对象的键名从 "name" 和 "id" 修改为 "text" 和 "value",以适应 Vant UI 的 DropdownMenu 组件的需求。这样,你就可以根据后端返回的数据自定义 options 里的属性名,并将其渲染到页面上。

以下是一个示例代码:

export default {  data() {    return {      value1: 0,      value2: 'a',      option1: [],      option2: [],    };  },  created() {    // 假设这是从后端获取的数据    const backendData = {      option1: [        { name: '全部商品', id: 0 },        { name: '新款商品', id: 1 },        { name: '活动商品', id: 2 },      ],      option2: [        { name: '默认排序', id: 'a' },        { name: '好评排序', id: 'b' },        { name: '销量排序', id: 'c' },      ],    };    // 将后端数据转换为 Vant UI DropdownMenu 组件所需的格式    this.option1 = backendData.option1.map(item => ({      text: item.name,      value: item.id,    }));    this.option2 = backendData.option2.map(item => ({      text: item.name,      value: item.id,    }));  },};

在这个示例中,我们在 created 生命周期钩子中从后端获取数据,并使用 map 方法遍历这些数据,将每个对象的 "name" 键名改为 "text","id" 键名改为 "value"。然后,我们将转换后的数据赋值给 option1option2,这样 Vant UI 的 DropdownMenu 组件就可以正确地渲染这些选项了。

 类似资料:
  • 我使用JAXB根据一些XSD模式生成java类。对于以下元素: <代码> jaxb生成以下代码: 问题是我们需要使用一些依赖于getter/setter方法命名约定的专有XML工具,例如,对于字段REC_LOC他们希望使用名为getRecLoc(String value)和setRecLoc()的方法,而不是getRECLOC()。 有没有办法自定义jaxb生成的方法名?

  • 我对React Router中路由的渲染顺序有问题。据我所知,任何子路由都将在其父路由之后进行渲染,因此将在DOM中的父路由之上进行渲染。 <代码> 我有这个路由器设置,但是在我从IndexRoute导航到/browse路由之后,浏览路由呈现在我的导航组件的顶部,我不能单击导航组件上的任何内容。 我的问题是如何强制Nav组件始终最后渲染,或者是否有更好的方法来构建我的应用程序以避免这种情况。 谢谢

  • 问题内容: 如何根据自定义属性排序ArrayList中的对象? 问题答案: 从实现,它就有一个像方法一样的方法。 因此,你的自定义设置应如下所示: 该方法必须返回一个,因此无论如何你都无法直接返回一个你计划中的。 你的排序代码几乎就像你写的那样: 如果你不需要重用比较器,则编写所有这些内容的一种更短的方法是将其编写为内联匿名类: 自从Java-8 现在,你可以通过使用lambda表达式来以较短的形

  • 后端返回样式数据,比如el-header的height:60,前端如何将返回的json数据动态绑定到el-header中,同时假设el-header有个子元素的line-height需要等于60,那么,如何将拿到的数据60也绑定到子元素上

  • 问题内容: 我正在使用JAXB来基于某些XSD架构生成Java类。对于诸如以下的元素: jaxb生成以下代码: 问题是我们需要使用一些专有的XML工具,这些工具依赖于getter / setter方法的命名约定。例如,对于字段REC_LOC,他们希望使用名为getRecLoc(String value)和setRecLoc()的方法,而不是getRECLOC()。 有什么方法可以自定义jaxb生成

  • 问题内容: 我正在使用JavaScriptSerializer反序列化json数据。一切工作都很好,但是我的问题是,json数据中的一个属性被命名为“ base”,所以我无法在C#代码中创建这样的属性。我发现我可以手动将值映射到构造函数中的属性,但是问题是,我的DTO具有200个属性,因此我不想手动进行此操作,而是希望找到任何其他解决方案。我也尝试使用注释,但这是: 并没有帮助我,每次将baseV