【问题标题】:Vue on input text, changes background color for both input fieldsVue 在输入文本上,更改两个输入字段的背景颜色
【发布时间】:2020-09-09 17:25:21
【问题描述】:

我正在使用bootstrap-vue 来显示模态。使用OPEN MODAL BUTTON 打开模式后,它会显示两个输入字段。当我向其中一个输入字段添加文本时,它会更改两个输入字段的颜色。有没有办法改变只包含数据类型的字段的颜色?

查看

<div id="app">
  <b-modal id="modal-center" ref="modalRef" centered title="DISPLAY MODAL" v-bind:hide-footer="true">
   <b-row class="my-1">
      <b-col sm="11">
       <div v-for="(listings, index) in list2" :key="index">
        <br/>
        <b-form-input v-model="listings.rfidState1" placeholder="insert text" v-on:input="gotText()" :style="isChanged ? { 'background-color': '#33FF90' } : null" ></b-form-input>
       </div>
      </b-col>
  </b-row>

  <br/>

  <b-row>
    <b-col><b-button block variant="info" v-on:click="hidemodal();">UPDATE</b-button></b-col>
    <br/>
   </b-row>

    <br/>

  </b-modal>

  <b-button block v-b-modal.modal-center variant="info">OPEN MODAL</b-button>

</div>

脚本

new Vue({
  el: "#app",
  data: {
    list2: [
      { text: "Learn JavaScript", done: false },
      { text: "Learn Vue", done: false }
    ],

    isChanged: false
  },
  methods: {

    hidemodal(){
        this.$refs['modalRef'].hide()
    },

    gotText(){
        this.isChanged = !this.isChanged;
    }

  }
})

这是我在jsfiddle上的代码

https://jsfiddle.net/ujjumaki/wgr3m6td/30/

【问题讨论】:

    标签: vue.js dom-events bootstrap-vue


    【解决方案1】:

    是的,这可以通过一些更改来完成。

    首先,从您的数据中删除 isChanged,并将其作为属性添加到您的每个 list2 对象中,因此每个对象如下所示:

    { text: "Your text", done: false, isChanged: false }
    

    接下来,你的 :style="isChanged ? " 应该是:

    :style="listings.isChanged ? "
    

    接下来,您的 v-on:input="gotText" 应该将索引作为参数,如下所示:

    v-on:input="gotText(index)"
    

    最后,您的 gotText 方法应该接收索引并使用它来更新 isChanged:

    gotText(index) {
      this.list2[index].isChanged = !this.list2[index].isChanged
    }
    

    这应该回答你的问题,但如果你想改变一些行为,请离开。

    编辑: 正如 n-smits 所建议的,你在 vue 实例中的数据不应该是一个对象,而是一个返回这样一个对象的函数:

    data(){
      return {
        list2: [..]
      }
    }
    

    我建议您阅读他的评论以了解为什么这是必要的。

    【讨论】:

    • 最重要的是,只需快速浏览一下我在问题代码中注意到的内容。数据应该是一个返回对象的函数 - 否则您将在所有组件中更新它。举个例子,试试vuejs.org/v2/guide/components.html#Reusing-Components上的按钮(第一组3个分开,第二组不分开)
    • 好收获!没注意到这个:)
    猜你喜欢
    • 2018-03-24
    • 2011-11-05
    • 2011-11-28
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 2020-09-17
    • 2011-08-02
    相关资源
    最近更新 更多