vuejs 计算数据检测模型是否已更新

vuejs Computed data detecting if model has been updated

我正在尝试检测 Vue 计算数据中的模型数据是否未更改。

我有两组变量需要检查, 在 Computed:filteredItems 之前应该 return 一个新列表或当前列表。

下面是我正在检查的两个数据

当前行为:

我已经更改,selectedInput 为空,这更新 Computed:filteredList 被触发。这是预期的。

第一个条件是确保此更新 return 的当前列表如果 text === selectedInput.text,按预期工作

但是,我需要第二个条件来检测 text 是否没有被更改。

<input v-model="text" />
<ul>
   <li v-for="item in filteredItems" @click="text=item.text"></li>
</ul>

{
  data():{
     text: 1,
     items: [],
     tempList: [],
     selectedItem: {text: 1}
  },
  computed: {
     filteredItems(){
        // when selectedItem.text === current text input, do not run
        if (this.selectedItem.text === text) return this.tempList;

        // how do i detect if selectedItem.text has not been changed
        if (this.selectedItem.text.hasNotChange??) return this.tempList;
     }
  }
}

数据流:1更新文本 > 2过滤列表 > 3点击listItem,更新(1)文本

  1. [输入(文本):更新类型] >
  2. [li(filteredItem): 按值(文本)和 (selectedInput.text) 类型筛选列表] >
  3. [li(item)@click: update (1), 还有另一个值(selectedInput.text) input(text) 等于 (item.text) ]

这个循环一直有效,直到我在其他地方采取行动更新 selectedInput.text

我可以用 Text 模型的 setter/getter 做些什么吗?

创建一个变量,changed。观看 selectedItem.text,并将 changed 设置为 true。在 text 上的观察者中,将 changed 设置为 false

我使用临时变量让它工作

data(){
   return: {
      text: "",
      temp: {
         text
      }
   }
}

computed(){
   filteredList(){
       var temporaryList,originalList,filteredList


       if ((this.text === $store.state.selectedText )||
           (this.text === this.temp.text ) ) {
                return temporaryList || originalList
           }

       // update
       this.temp.text = this.text

       return filteredList
   }
}

认为在计算方法中更新变量是一种不好的做法。