【问题标题】:vue-select select the option based on ipaddressvue-select 根据ipaddress选择选项
【发布时间】:2018-04-28 12:22:03
【问题描述】:

我正在尝试使用这个插件https://github.com/sagalbot/vue-select

这个问题是 v-model 提供了整个对象,这与原生选择不同,这真的很痛苦。

已确认该插件不支持此处列出的选项https://github.com/sagalbot/vue-select/issues/122

作者建议使用计算属性。这是演示:http://jsbin.com/wedalog/8/edit?html,js,output

代码如下:

Vue.component('v-select', VueSelect.VueSelect);

new Vue({
  el: '#app',
  data: {
    selected: null,
    options: [
    {
      "id": 1,
      "first_name": "Timothy Chavez",
      "ip_address": "20.153.187.10"
    },
    {
      "id": 2,
      "first_name": "Harold Armstrong",
      "ip_address": "55.156.218.75"
    }, 
    {
      "id": 3,
      "first_name": "Randy Black",
      "ip_address": "79.135.200.161"
    }, 
    {
      "id": 4,
      "first_name": "Joshua Phillips",
      "ip_address": "146.153.135.116"
    }
    ]
  },
  computed: { 
    selectedIp() {
        return this.selected ? this.selected['ip_address'] : null
    }   
  }
});

这是它在 html 中的使用方式:

<v-select v-model="selected" label="first_name" :options="options"></v-select>

它有效,但答案仅在保存时有效。不知道加载时该怎么做?例如,我从服务器获得的IpAddress20.153.187.10 那么我该如何选择合适的选项?

我不知道为什么作者会因为这样基本的东西而忽略它。

还有什么技巧可以让它工作,既可以保存也可以加载?

【问题讨论】:

  • 您可能需要显示一些代码让我们提供帮助。
  • @webnoob:添加了来自 jsbin 的代码。

标签: javascript vue.js vuejs2


【解决方案1】:

您将需要使用 getOptoinLabel 并确保您使用的是最新的 vue-select,因为我不确定该道具是在哪个版本上添加的。所以参考你的例子。你将把它添加到你的代码中:

methods: {
   getLabel: function(val){
     if(typeof val === 'object'){
         return val.first_name;
     }else {
     return this.options.filter(function(option){
            return option.ip_address === val;
        })[0].first_name;
     }
   }
}

并在组件实例上添加道具:get-option-label="getLabel"

&lt;v-select :get-option-label="getLabel" v-model="selected" label="first_name" :options="options"&gt;&lt;/v-select&gt;

请注意,默认情况下,上述函数将参数 val 作为您传递的选项,即在本例中为 v-model。因此,在您的情况下,它将是 IP 地址,然后您需要做的就是按照您喜欢的方式过滤您的选项并返回名称。

【讨论】:

  • 你确定你使用的是同一个插件吗?这是文档sagalbot.github.io/vue-select 我没有看到任何东西:get-option-label
  • 文档有点旧,但是我使用的是相同的插件。查看source code line 468
  • 谢谢。这就解释了。您知道基于 ID 的值何时可用吗?目前它给了整个对象我需要像github.com/sagalbot/vue-select/issues/122 这样的东西,如果这个插件不支持那么任何其他的也可以工作。它现在变得太复杂了,我相信我正在做插件预期做的事情,但遗憾的是我将不得不实现所有这些黑客。请问有什么想法吗?
  • 我只会使用 if else 来检查我们是否有一个对象作为值。只有当您自己将 ID 传递给 v-model 时,您通常才会获得该 ID。例如,当您将所选值设置为“20.33.44.55”时。我更新了答案以反映这一点。老实说,我不得不在我的项目中使用 v-select 并且我做了我喜欢组件的方式修改了源代码。
猜你喜欢
  • 1970-01-01
  • 2015-09-20
  • 2020-10-09
  • 1970-01-01
  • 2021-02-18
  • 2022-10-15
  • 1970-01-01
  • 2022-11-23
  • 2022-12-06
相关资源
最近更新 更多