data() { ..., search: { gather: [], page: { current: 1, size: 5 } }},methods() { ..., // 新增搜索條件 addSearch() { const input = this.searchInput let copySearch = {...this.search} copySearch.gather.push({ fieldName: this.searchColumns[input.field], field: input.field, terms: input.terms, value: input.value }) console.log('search===copySearch:', this.search === copySearch) this.search = copySearch input.field = '' input.terms = '' input.value = '' }, // 刪除搜索條件。由Tag組件,觸發(fā)on-close deleteSearch(event, item) { const index = this.search.gather.indexOf(item) let copySearch = {...this.search} copySearch.gather.splice(index, 1) console.log('search===copySearch:', this.search === copySearch) this.search = copySearch },},watch: { // 深度監(jiān)聽 search: { handler: function(newS, oldS) { console.log(newS) console.log(oldS) console.log('newS===oldS:', newS === oldS) if (newS.gather.length !== oldS.gather.length) { this.page.current = 1 } this.tableNewData() }, deep: true }}https://cn.vuejs.org/v2/api/#...注意:在變異 (不是替換) 對象或數(shù)組時,舊值將與新值相同,因為它們的引用指向同一個對象/數(shù)組。Vue 不會保留變異之前值的副本。替換了對象也不起作用,是我哪里寫錯了嗎? 望各路大神幫忙,我折騰一天了。
vue中watch的newVal和oldVal相同
尚方寶劍之說
2019-03-20 19:15:06