0

假設有一個名爲'_arr'的數組,我從中刪除了一個項目。刪除之前,雖然我登錄到控制檯。問題是日誌顯示數組就好像該項目已被移除一樣。我審查了Polymer Documentation中的數據系統,但仍然在撓頭。從聚合物1.x中的陣列中刪除項目時出現的奇怪行爲

我錯過了數據系統的工作方式,或者我應該在其他地方尋找原因?

編輯:_arr是一個字符串數組,我傳遞的事件,如:

this.fire('rmv-item' , {item: 'item content which is string'}); 

下面的代碼

_removeItemFromArr: function(e) { 

    const index = this._arr.indexOf(e.detail.item) ; 
    console.log('array before remoivng item:' , this._arr , index); //item doesn't exist 

    if (index>-1) { this.splice('_arr' , index, 1 } 

    console.log('array after removing item: ' , this._arr , index); //item doesn't exist 
}, 
+0

你可以發佈數組'_arr'的內容,你在'e'中傳遞了什麼? – Ofisora

+1

也許我=索引? –

+0

我的壞,是的,我是索引,修復它,對不起 – TheeBen

回答

0

的問題是,事情正在做的正是你說的事情:控制檯日誌數組,最重要的是不是將數組記錄爲「在過去的某個特定時間」,它會在日誌實際運行時記錄數組。而且由於日誌記錄操作不同步,在實際將交叉引用和符號表鏈接的數據寫入瀏覽器控制檯時,您已經從數組中刪除了數據,因此您所看到的是console.log看到的內容它實際上踢。

如果你想要一個真正的快照你的數組方式「當你調用日誌」,不要記錄數組,記錄數組的副本,這是保證使用類似的東西同步生成slice()

const index = this._arr.indexOf(e.detail.item); 
console.log(`array before removing item at [${index}]: ${this._arr.slice()}`); 

而且工作很好。

+1

非常感謝您的回覆!學到了新的東西:) – TheeBen