2017-02-22 41 views
0

我在Vuex商店中有許多公司。每個公司對象都有幾個對象...爲了簡化我的問題,想象一下Vue.js Vuex - 在數據庫中刪除未反映在視圖中

company {id:1,approval_notes:[{id:1},{id:2},{id:3} ],鰭: {total_rev:10000}}

我想從公司的1

的ID在視圖中移除與2的id approval_note,我有

deleteNote(obj) { 
       if(confirm('Are you sure you want to delete this note?')) { 
        let path = '/api/approval_notes/' + obj.id; 
        axios.delete(path) 
         .then(function(rsp) { 
          this.$store.dispatch('delete_approval_note', obj); 
         }.bind(this)) 
         .catch(function (err) { 
          console.log('AXIOS ERR', err); 
         }.bind(this)); 
       } 
      } 

行動是

export const delete_approval_note = ({commit}, payload) => { 
    commit('DELETE_APPROVAL_NOTE', payload); 
}; 

,變異是

export const DELETE_APPROVAL_NOTE = (state, payload) => { 
    _.each(state.companies, function(co) { 
     if(co.id = payload.company_id) { 
      let notes = co.approval_notes; 
      notes.splice(notes.indexOf(payload), 1); 
     } 
    }); 
}; 

的音符從數據庫中刪除,但視圖不無刷新頁面更新。

這種類型的事情我會做一堆,所以瞭解這個過程是很重要的,因爲我明顯地不知道現在。

任何幫助表示讚賞。

+0

它實際上從筆記中刪除它? – Saurabh

+0

不在「實時」中......它從數據庫中刪除並刷新頁面,我正在重新獲取筆記,因此它不再顯示。點擊時我需要刪除它。 – jgravois

回答

1

相反的IndexOf,採用

notes.findIndex(obj => obj.id == payload.id) 

它可以使用的IndexOf複雜的對象時變得棘手,我主要依靠的indexOf如果處理簡單的值(整數,字符串,布爾值)