【发布时间】:2018-02-09 06:43:54
【问题描述】:
这是我的组件的计算属性:
methods: {
addFavoritePlace(place_id) {
axios.post('/api/add-favorite-place', { place_id: place_id })
.then(response => {
// I need here force command.
});
},
},
computed: {
filteredPlaces: function () {
var is_open;
if (this.showOpened) {
is_open = 'open'
} else {
is_open = 'close'
}
return this.singlePlaces.filter((j) => {
return j.name.toLowerCase().match(this.search.toLowerCase();
});
}
}
还有我的标记:
<span @click="addFavoritePlace(place.id)" class="favorite-btn active" v-if="place.is_favorited == true">
<i class="icon-heart"></i>
</span>
<span @click="addFavoritePlace(place.id)" class="favorite-btn" v-else>
<i class="icon-heart"></i>
</span>
我需要再次调用计算里面的过滤函数。 激活收藏按钮。
【问题讨论】:
-
您不应该“重新计算”该属性,因为当涉及的数据之一发生变化时,它会自行完成。在我看来,您只需更新原始列表中的数据,
this.singlePlaces。 -
我试过了。但是不是更新数据,而是再次添加。
-
你是在找到索引后更新了元素还是刚刚推送了一个新条目?
-
更新了数据库中的数据,但是又重新添加了未更新的状态。
-
我的意思是“更新了 Vue.js 中的元素”。您的
post应该返回更新后的值,只需将其分配给同一索引处的数组,您的计算将自行更新。