Javascript 包含属性X的第一个项上的Vue v-for调用方法
假设我有一个组件,它以Javascript 包含属性X的第一个项上的Vue v-for调用方法,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,假设我有一个组件,它以v-for循环重复,如下所示: <hotel v-for="(hotel, index) in hotels"></hotel> 当我的v-for循环仅在第一次遇到此truthy属性时才遇到属性name设置为true时,如何执行操作 我知道我可能会将某个属性缓存到某个位置,并且只运行一次,如果已设置,则不会再次运行,但这感觉效率不高。只需使用computed HTML 只要使用计算机 HTML 最好的方法是使用过滤功能 data() {
v-for
循环重复,如下所示:
<hotel v-for="(hotel, index) in hotels"></hotel>
当我的v-for
循环仅在第一次遇到此truthy属性时才遇到属性name
设置为true时,如何执行操作
我知道我可能会将某个属性缓存到某个位置,并且只运行一次,如果已设置,则不会再次运行,但这感觉效率不高。只需使用computed
HTML
只要使用计算机
HTML
最好的方法是使用过滤功能
data() {
return {
firstTime: false,
};
},
filters: {
myFunc: function (hotel) {
if (hotel.name && !this.firstTime) {
//perform some action
this.firstTime = true;
}
}
}
<hotel v-for="(hotel, index) in hotels | myFunc"></hotel>
data(){
返回{
第一次:错,
};
},
过滤器:{
myFunc:功能(酒店){
如果(hotel.name&&!this.firstTime){
//执行一些操作
this.firstTime=true;
}
}
}
最好的方法是使用过滤功能
data() {
return {
firstTime: false,
};
},
filters: {
myFunc: function (hotel) {
if (hotel.name && !this.firstTime) {
//perform some action
this.firstTime = true;
}
}
}
<hotel v-for="(hotel, index) in hotels | myFunc"></hotel>
data(){
返回{
第一次:错,
};
},
过滤器:{
myFunc:功能(酒店){
如果(hotel.name&&!this.firstTime){
//执行一些操作
this.firstTime=true;
}
}
}
使用计算机复制酒店
,其中第一家酒店拥有isFirst
属性
computed: {
hotelsWithFirstMarked() {
var result = this.hotels.slice();
var first = result.find(x => x.name);
if (first) {
first.isFirst = true;
}
return result;
}
}
使用computed创建
hotels
的副本,其中第一个具有isFirst
属性
computed: {
hotelsWithFirstMarked() {
var result = this.hotels.slice();
var first = result.find(x => x.name);
if (first) {
first.isFirst = true;
}
return result;
}
}
不能使用参数进行计算。你是说一种方法。这在重新渲染时也会有点脆弱。。有关无法使用参数进行计算的说明,请参阅本主题。你是说一种方法。这在重新渲染时也会有点脆弱。。请参阅本主题以获取解释,我猜如果要设置不存在的属性,我还应该使用
this.$set()
来保持反应性?而不是直接设置属性,或者这里不是这样吗?不是computed中的情况,在编写它时我不得不提醒自己两次。顺便说一下,您正在使用Object.assign()
,然后依次调用对象上的result.find
(数组原型方法)。我理解这个概念,但可能会将其更改为工作代码以供将来参考/其他用户使用?我猜如果我想设置一个不存在的属性,我还应该使用this.$set()
来保持反应性?而不是直接设置属性,或者这里不是这样吗?不是computed中的情况,在编写它时我不得不提醒自己两次。顺便说一下,您正在使用Object.assign()
,然后依次调用对象上的result.find
(数组原型方法)。我理解这个概念,但可能会将其更改为工作代码,以供将来参考/其他用户使用?
computed: {
hotelsWithFirstMarked() {
var result = this.hotels.slice();
var first = result.find(x => x.name);
if (first) {
first.isFirst = true;
}
return result;
}
}