0

アイテムを削除する '_arr'という配列があるとします。私はそれをコンソールに記録するが、削除する前に。問題は、ログにアイテムが既に削除されているかのように配列が表示されることです。私はPolymer Documentationのデータシステムを見直し、まだ私の頭を傷つけています。Polymer 1.xのArrayからアイテムを削除するときの異常な動作

私はデータシステムの仕組みに何か不足していますか、原因について他の場所を探しているはずですか?

EDIT:_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

多分i = indexですか? –

+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

関連する問題