coffeescript가 표준 인 새로운 Play20 사이트를 프로그래밍하면서 지난 주에 coffeescript를 쓰기 시작했습니다. 5 분마다 내 클래스에서 getData 함수를 업데이트하려고하지만 setInterval 함수가 내 클래스에 바인딩되지 않습니다. setUpdateInterval() 함수가 생성자 내에서 호출되므로 'this'객체에 계속 도달 할 수 있으므로 처음으로 getData를 호출합니다.Coffeescript setInterval in class
하지만 첫 번째 호출 후에 setInterval은 위젯 인스턴스와 더 이상 연결되지 않으며 this.getData() 함수가 무엇인지 (도달하는 방법)를 알지 못합니다.
누군가 어떻게하는지 알고 있습니까?
class Widget
constructor: (@name) ->
this.setUpdateInterval()
getData: ->
console.log "get Data by Ajax"
setUpdateInterval: (widget) ->
setInterval(this.getData(), 3000000)
당신은'cb = @ getData.bind @'와 같은 바인드 호출을 할 수 있으며,'setInterval' 라인에 괄호가 필요하지 않습니다 ... more coffee. +1, IE에서 작동하지 않는다는 사실을 제외하고이 답변이 내 것보다 낫다. – hvgotcodes
감사합니다. 코드는 내가 원했던 것과 정확히 똑같습니다 (Chrome). '콜백 = -> that.getData.call (그)'는 컴파일되지 않는 것 같습니다. 다음 질문은 바꿔서 differtly 당신은 내가 IE를 제외한 모든 브라우저를위한 하나의 IE를위한 두 개의 바인딩이 필요하다는 뜻입니까 아니면 그냥 마지막 바인딩이 필요합니까? 여기에 – Jacob
@ user1353536이 컴파일됩니다. – Reactormonk