2017-04-22 11 views
1

私はいくつかの情報を持つオブジェクトを持っています。一方、私は、このオブジェクト型の多くのオブジェクトを保持しているストアを持っています。Javascriptオブジェクト自体をパラメータとして渡す

単一のオブジェクトは、自分自身をこのストアから削除できる必要があります。 私の店は、このオブジェクトのパラメータを持つ関数 "DeleteObjectFromStore"を知っています。 これでオブジェクト自体を渡したいと思いますが、使用する構文がわかりません。

店舗:

class NoteStore { 
    constructor() { 
     this.notes = []; // Collection of all notes 
    } 

    DeleteNote(note) { // Delete this object from the store 
     var index = this.notes.indexOf(note); 
     if (index > -1) 
      array.splice(index, 1); 
    } 
} 

そして、私のオブジェクトだから、これは正しくないキーワードを使用して

class Note { 
    constructor(noteTitle, noteText, noteStore) { 
     this.title = noteTitle; // name 
     this.text = noteText; // content 
     this.store = noteStore; // dataStore 
    } 

    CreateDeleteButton(parentDiv) { // Create a button for deleting itself 
     var data = this.store; 
     var deleteBtn = document.createElement("input"); 
     deleteBtn.type = "button"; 
     deleteBtn.value = "Delete"; 
     deleteBtn.onclick = function() { 
      data.DeleteNote();    // <= missing parameter! 
     } 
     parentDiv.appendChild(deleteBtn); 
    } 
} 

。それから私はボタンを渡します。

誰かが私を助けてくれますか?

+0

あなたはthis.notes' 'から' Note'インスタンスを削除しようとしていますか? 'array'はどこに定義されていますか? – guest271314

答えて

4

は、関数の外に、このための名前を使用してみてください:

CreateDeleteButton(parentDiv) { // Create a button for deleting itself 
    var data = this.store; 
    var noteObj = this; 
    var deleteBtn = document.createElement("input"); 
    deleteBtn.type = "button"; 
    deleteBtn.value = "Delete"; 
    deleteBtn.onclick = function() { 
     data.DeleteNote(noteObj);    
    } 
    parentDiv.appendChild(deleteBtn); 
} 
+1

または: 'deleteBtn.onclick = function(){data.DeleteNote(this); } .bind(this); ' – Andreas

関連する問題