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

bootstrap-vue:如何显示选定项目的文本?

宣煜
2023-03-14

我正在使用引导Vue来呈现一个选择输入。一切都很好--我可以根据所选的选项获取值并更改UI。

我正在尝试更改我的页面上的标题文本--成为所选选项的文本。我正在使用一个对象数组来呈现选择输入中的选项。

以下是我在模板中使用的内容:

<b-form-group
    id="mySelect"
    description="Make a choice."
    label="Choose an option"
    label-for="mySelect">
    <b-form-select id="mySelect"
        @change="handleChange($event)"
        v-model="form.option"
        :options="options"/>
</b-form-group>

下面是我传递给模板的数据/选项的样子:

...
data: () => ({
    form: {
        option: '',
    }
    options: [
        {text: 'Select', value: null},
        {
            text: 'Option One',
            value: 'optionOne',
            foo: {...}
        },
        {
            text: 'Option Two',
            value: 'optionTwo',
            foo: {...}
        },
}),
methods: {
    handleChange: (event) => {
        console.log('handleChange called');
        console.log('event: ', event);  // optionOne or optionTwo
    },
},
...

我可以获得optionOneoptionTwo,我希望获得的是optionOneoptionTwo(文本值),而不是value值。有没有一种方法可以做到这一点,而不创建一个额外的数组或其他东西来映射选定的选项?我也尝试过绑定到实际的options对象,但在这条路由上也不太走运。谢谢您的任何建议!

解决方案

感谢@Vuco,这是我最后得到的。引导Vue通过:options将所有select选项传入。我正在努力查看如何访问选定的完整对象;不仅仅是价值。

模板:

<h1>{{ selectedOption }}</h1>
<b-form-group
    id="mySelect"
    description="Make a choice."
    label="Choose an option"
    label-for="mySelect">
    <b-form-select id="mySelect"
        v-model="form.option"
        :options="options"/>
   </b-form-group>

JS:

...
computed: {
    selectedOption: function() {
        const report = this.options.find(option => option.value === this.form.option);
        return option.text;  // Option One
},
methods: {
    //
}
...

现在,当我选择一些东西时,文本值会显示在我的模板上。

共有1个答案

苍元章
2023-03-14

我不知道Vue bootstrapselect及其事件和逻辑,但您可以创建一个简单的computed属性,该属性通过当前的表单返回信息。option值:

null

let app = new Vue({
  el: "#app",
  data: {
    form: {
      option: null,
    },
    options: [{
        text: 'Select',
        value: null
      },
      {
        text: 'Option One',
        value: 'optionOne'
      },
      {
        text: 'Option Two',
        value: 'optionTwo'
      }
    ]
  },
  computed: {
    currentValue() {
      return this.options.find(option => option.value === this.form.option)
    }
  }
});
<div id="app">

  <b-form-group id="mySelect" description="Make a choice." label="Choose an option" label-for="mySelect">
    <b-form-select id="mySelect" v-model="form.option" :options="options" />
  </b-form-group>

  <p>{{ currentValue.text }}</p>
</div>
 类似资料:
  • 我正在应用程序中使用引导下拉组件,如下所示: 我想将选定的项目显示为btn标签。换言之,将“请从列表中选择”改为已选择的列表项目(“项目一”、“项目二”、“项目三”)。

  • 我使用gridview在我的gridview中选择多个项目(图像)。 我使用< code > MultiChoiceModeListener 来实现这一点,问题是选中的项目没有突出显示 选择器xml: 当我触摸一个项目时,它被蓝色覆盖(我认为这是因为我使用了< code > GridView . setdrawselectorontop(true);)...我一抬起手指,蓝色就消失了。 我希望选择

  • 我在我的应用程序中使用了可以在android工作室添加的抽屉菜单,我在导航抽屉中添加了一些菜单条目(参见代码块)。如果我按下第一个项目(nav_home)或第二个,导航抽屉会突出显示当前按下的项目。 如果我按下项目“nav_information”按钮或其他项目,则会打开新的(单击的)片段,并且看不到突出显示(主页或第二个项目仍突出显示) 很快,只有第一个项目在选定的项目上显示突出显示。 这是我处

  • 我试图使用一对剑道下拉列表来过滤AngularJS中的数据集。其中一个数据源使用静态可观察数组按状态筛选数据集;另一个数据源是数据集的“区域ID”列的一组不同值,也存储为可观察数组。当状态下拉列表更改时,区域下拉列表应该从新过滤的数据中重新加载区域列表。这是可行的,但是选定的值最终会被忽略,即使应该代表选定值的模型仍然具有正确的值,并且数据仍然被相同的值正确过滤。打开下拉列表,然后单击它,使其按应

  • 我有一个从内部存储器加载图像的回收器视图。我想在单击时突出显示所选项。我试了很多方法,但都不起作用。实际上,我需要的是,当我在Recycler视图中单击任何项目时,该项目必须进入我的ArrayList,它也应该突出显示,当我单击或说unselect时,它必须再次变为正常。以下是我的代码: 这是我的适配器类:

  • 这可能是一个骗局——我找不到它——我基本上只是试图通过提供我自己的ListCellRenler来自定义JComboBox显示: 当我展开JComboBox列表时,组件会正确显示名称。但是,在选择项目时,显示将恢复为myObj的toString()值。 我错过什么了吗?