我正在尝试检测Vue计算数据中是否未更改模型数据。
我有两组需要检查的变量, 在Computed之前:filteredItems应返回一个新列表或当前列表。
以下是我正在检查的两个数据
当前行为:
我已将 selectedInput 更改为null,此更新Computed:filteredList将被触发。这是预期的。
第一个条件是确保此更新返回当前列表,如果 text === selectedInput.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更新文本&gt; 2过滤器列表&gt; 3单击listItem,更新(1)文本
此循环有效,直到我在其他地方执行更新selectedInput.text
的操作对于文本模型,我可以使用setter / getter做些什么。
答案 0 :(得分:0)
创建变量from django.db import models
from customuser.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
class Status(models.Model):
status = models.CharField(max_length=50)
class Position(models.Model):
position = models.CharField(max_length=40)
class Role(models.Model):
role = models.CharField(max_length=50)
class Company(models.Model):
company = models.CharField(max_length=50)
class Profile(models.Model):
P = 'partner'
U = 'user'
TYPE_CHOICES = (
(P, 'partner'),
(U, 'user'),
)
user = models.**OneToOneField**(User, on_delete=models.CASCADE)
user_type = models.CharField(max_length=10, choices=TYPE_CHOICES, default="U")
name = models.CharField(max_length=50, blank=True)
surname = models.CharField(max_length=50, blank=True, default = None)
avatar = models.ImageField(upload_to = 'images/profile/%Y/%m/%d/', blank=True, null=True)
position = models.ForeignKey('Position',blank=True, default=None)
role = models.ForeignKey('Role', blank=True, default=None)
company = models.ForeignKey('Company',blank=True, default=None)
status = models.ForeignKey('Status', blank=True, default=None)
@receiver(post_save, sender=User)
def create_or_update_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
instance.profile.save()
。观看changed
,并将selectedItem.text
设置为changed
。在true
上的观察者中,将text
设置为changed
。
答案 1 :(得分:0)
我使用临时变量
让这个工作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
}
}
认为在Computed方法中更新变量是不好的做法。