2017-03-31 2 views
0

처음으로 ES6에서 작업 중이며 맵에 대한 내용을 읽었습니다. 내가 이해하는 바로는,이 ES6의 가능성 내에서 잘해야한다 : 나는 addText 요소를 클릭 할 때 그러나정의 된 맵의 정의되지 않은 속성 'set'을 읽을 수 없습니다.

export class Elements { 

    constructor() { 
     this.elements = new Map(); 
     this.attachListeners(); 
    } 

    textElement() { 
     this.elements.set((elements.length + 1), new TextElement()); 
    } 

    attachListeners() { 
     document.getElementById('addText').addEventListener('click', this.textElement); 
    } 
} 

, 나는 내가 교환 시도

Uncaught TypeError: Cannot read property 'set' of undefined at HTMLDivElement.textElement

내 콘솔에서 다음을 얻을 그러나 Set, ArrayObject을 가진 Map은 동일한 오류가 내 콘솔에 계속 발생했습니다.

어떻게 이런 간단한 작업이 작동하지 않을 수 있습니까?

+0

* 공통 문제점 : 중복에서 콜백/이벤트 핸들러 *로 객체 메소드 사용 *을 참조하십시오. –

답변

1

는이 같은 리스너를 결합해야합니다

document.getElementById('addText').addEventListener('click', this.textElement.bind(this)); 

그렇지 않으면, thistextElement 기능에 'addText'요소를 의미합니다.

textElement에 넣고 .bind(this)을 넣고 넣으십시오. 그러면 무슨 일이 일어나는지 알 수 있습니다.

관련 문제