Vuetify 连接 v-select 的项目文本中的两个字段

新手上路,请多包涵

有没有办法在 v-select 的项目文本字段中将两个字段连接在一起?

我让它为下拉列表值工作,但可见条目不显示这两个字段。

问题在这里:item-text=“’\({data.item.name}, \){data.item.group}‘”

代码:

 `<v-select label="Select" v-bind:items="people" v-model="e11"
  item-text="'${data.item.name}, ${data.item.group}'"
  item-value="name" max-height="auto" autocomplete >
  <template slot="item" slot-scope="data">
    <v-list-tile-content>
      <v-list-tile-title
         v-html="`${data.item.name}, ${data.item.group}`">
      </v-list-tile-title>
      <v-list-tile-sub-title
         v-html="data.item.group">
      </v-list-tile-sub-title>
    </v-list-tile-content>
   </template>
</v-select>`

笔示例: https ://codepen.io/anon/pen/dJveWM?editors=1010

谢谢

原文由 DCripps 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

您不仅需要为插槽 item 定义模板,还需要为插槽 selection 在使用 <v-select> --- 时定义模板:

 <template slot="selection" slot-scope="data">
  <v-chip
    close
    @input="data.parent.selectItem(data.item)"
    :selected="data.selected"
    class="chip--select-multi"
    :key="JSON.stringify(data.item)"
  >
    <v-avatar>
      <img :src="data.item.avatar">
    </v-avatar>
    {{ data.item.name }}
  </v-chip>
</template>

https://vuetifyjs.com/components/selects#6-scoped-slots

以供参考。

这也可以是一个更简单的解决方案,就像您要实现的解决方案一样:

 <template slot="selection" slot-scope="data">
  {{ data.item.name }}, {{ data.item.group }}
</template>

另请参阅实际操作:

https://codepen.io/anon/pen/PEpaMM?editors=1011

原文由 connexo 发布,翻译遵循 CC BY-SA 3.0 许可协议

对于 David Folkner:您可以将 :filter="customFilter" 属性添加到自动完成组件,然后在 方法 块中添加实现自定义搜索的 customFilter 函数。

例如,如果您的 项目 列表由 n 个具有 idfunctiondescription 属性的项目对象组成,您应该这样做以搜索 function 和 description 属性:

自动完成组件:

 <v-autocomplete v-model="itemSelected" :items="items" required box chips label="Select an Item" item-value="id" item-text="description" :filter="customFilter">
    <template slot="selection" slot-scope="data">
        <v-chip :selected="data.selected" class="chip--select">
            {{data.item.function}} - {{ data.item.description }}
        </v-chip>
    </template>
    <template slot="item" slot-scope="data">
        <v-list-tile-content>
            <v-list-tile-title v-html="data.item.function +' - '+ data.item.description"></v-list-tile-title>
        </v-list-tile-content>
    </template>
</v-autocomplete>

方法:

 methods: {
    customFilter (item, queryText, itemText) {
        const textOne = item.function.toLowerCase()
        const textTwo = item.description.toLowerCase()
        const searchText = queryText.toLowerCase()
        return textOne.indexOf(searchText) > -1 || textTwo.indexOf(searchText) > -1
    }
}

原文由 Luca 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题