Vue Bootstrap字符串逗号与textarea分隔的数组?

Posted

技术标签:

【中文标题】Vue Bootstrap字符串逗号与textarea分隔的数组?【英文标题】:Vue Bootstrap Array of strings comma seperated from text area? 【发布时间】:2021-09-19 19:54:06 【问题描述】:

我需要从 vue bootstrap 中的文本区域中提取字符串并将它们保存到数组中。这些是数字和字母字符串,当有人昏迷时,它们分开。如果我们能做到这一点,那么它们就会在标签添加输入字段中显示为“药丸”或标签。阅读文档找不到任何专门针对此的内容,非常感谢您的帮助。

【问题讨论】:

javascript String split() 我是否使用 v-model 将它们保存到数组中?我真的很困惑,我知道我必须以某种方式使用拆分 【参考方案1】:

拆分应该不会太难,只需手动绑定输入并解析来自textarea的输出,并为每个适当的数据数组转换。

对于textarea的输入值:

将数组元素连接在一起,, 分隔每个元素 我们可以使用list.join(', ') 来完成此操作

对于textarea的输出值:

我们可以将处理程序绑定到Bootstrap-Vue's textarea 发出的事件之一,在这种情况下我使用update,因为这就是BV uses for v-model 该处理程序会将文本转换为我们的数组: 将字符串拆分为逗号数组:value.split(",") 修剪每个元素以删除前面/后面的空格:.map(item => item.trim()) 然后过滤掉任何空元素:.filter(item => item.length > 0)

此输入/输出逻辑将适当地将 textarea 的内容转换为数组,反之亦然。

至于药片,我不确定我在下面所做的是否正是您想要的,但我想我会试一试。


功能示例

new Vue(
  el: '#app',
  data() 
    return 
      listArr: ["test", "1", "2"],
    
  ,
  computed: 
    arrToText() 
      return this.listArr.join(', ');
    ,
  ,
  methods: 
    textToArr(value) 
      this.listArr = value.split(",")
        .map(item => item.trim())
        .filter(item => item.length > 0);
    ,
  ,
);
<!-- Set up Vue and Bootstrap-Vue for snippet -->
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap@4/dist/css/bootstrap.min.css" /><link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.css" /><script src="//unpkg.com/vue@2/dist/vue.min.js"></script><script src="//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.js"></script>

<div id="app">
  <b-form-textarea :value="arrToText" class="mb-2" @update="textToArr"></b-form-textarea>
  <h3>
    <b-badge v-for="(item, index) in listArr" :key="index" pill variant="primary" class="mr-2"> item </b-badge>
  </h3>
</div>

【讨论】:

以上是关于Vue Bootstrap字符串逗号与textarea分隔的数组?的主要内容,如果未能解决你的问题,请参考以下文章

数字输入中的 Google Chrome Android 逗号 (Bootstrap-Vue)

如何在vue js中用逗号分隔的字符串中发布子类别?

Vue.js 与 Bootstrap 的快速集成实现 Bootstrap-vue | 软件推介

JavaScript数组字符串相关操作

vee-validate 不能与 bootstrap-vue 一起使用

为啥 nuxt-link 与 Bootstrap-vue 一起使用时会刷新页面?