在列表中会对其中一列进行操作,之后需要更新这一列的数据,这个时候我们有两种方法去更新,一种是更新全部,这时候只需要想列表重新获取数据就可以了,但是这种方法需要重新加载整个页面,很不友好,另一种是只更新需要更新的这一列数据,怎么更新呢?
1、增加一个点击事件
<van-popup get-container="body"
v-model="actSheetOpt.show"
:title="actSheetOpt.title"
border-radius>
<component :is="actSheetOpt.view"
:item="item"
@close="actSheetOpt.show=false"
@cancelInquiryConfirm="cancelInquiryConfirm"></component>
</van-popup>
2、自组件想父组件传递值的时候触发事件
cancelInquiryConfirm () {
this.refreshCurData()
},
refreshCurData () {
const params = {
code: this.item.code
}
this.$http('xxx', params).then({rows} => {
rows[0] && Object.assign(this.item, rows[0])
})
}
Object.assign()
1.如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。后面的源对象的属性将类似地覆盖前面的源对象的属性
2.Object.assign 方法只会拷贝源对象自身的并且可枚举的属性到目标对象。该方法使用源对象的[[Get]]和目标 对象的[[Set]],所以它会调用相关 getter 和 setter。因此,它分配属性,而不仅仅是复制或定义新的属性。如
果合并源包含getter,这可能使其不适合将新属性合并到原型中。为了将属性定义(包括其可枚举性)复制到原型,应使用Object.getOwnPropertyDescriptor()和Object.defineProperty() 。