2013-02-20 1 views
1

프로젝트 용으로 coffeescript를 쓰고 있는데 클래스에 일부 정적 속성을 만들려고합니다. 나는 같은 일을 성공적으로 수행하는 코드베이스의 또 다른 파일을 따라 왔지만, 내 것이 작동하지 않는다.CoffeeScript에서 정적 속성과 관련하여 문제가 발생했습니다.

내 코드

class Messages 
    @toggleUnreadConversations:()-> 
     # This is the line in question, Messages is defined with all the 
     # functions but the property ViewOnlyUnread is undefined 

     Messages.ViewOnlyUnread = !Messages.ViewOnlyUnread 

    @init:-> 
     @ViewOnlyUnread = false 
성공적으로 사용하는 코드베이스

다른 코드 정적 속성

같은 방법으로 호출되고 난이 초기화하기 기능을 무엇을 말할 수에서
class Map 
    @CacheRealtor: (realtor) -> 
     realtor.realtor_id = parseInt(realtor.realtor_id) 

     # Here the static property IdToRealtorMap is defined 
     Map.IdToRealtorMap[parseInt(realtor.realtor_id)] = new Realtor() 
    @Init: -> 
     @IdToListingMap = [] 
     @IdToRealtorMap = [] 

, 페이지가로드 init가 호출됩니다. 두 클래스 모두 정적 클래스이며, 둘 중 하나의 인스턴스가 생성되지 않습니다. 누구든지 문제가 될 수있는 아이디어가 있습니까?

+0

무엇을 작동하지 않습니다

당신은 init 세트가있는 인스턴스 변수를 참조 할 @를 사용해야합니까? – robkuz

+0

해당 코드 줄이 실행될 때 Messages.ViewOnlyUnread는 undefined로 평가됩니다. – Mike

답변

4

init 함수는 인스턴스 변수 설정되어 있지만 toggleUnreadConversations 함수는 것처럼 클래스의 속성을을 참조하려고한다.

class Messages 
    @toggleUnreadConversations: -> 

    # reference the instance variable 
    @ViewOnlyUnread = [email protected] 

    @init: -> 
    @ViewOnlyUnread = false 
+0

언급을 잊어 버렸습니다. 나는 실제로 클래스의 인스턴스를 초기화하지 않습니다. 내 페이지가로드 될 때 단순히 Messages.init()를 호출하기 만하면됩니다. 내 목표는 그것을 클래스 속성으로 만드는 것입니다. Message 클래스는이 모든 기능을 네임 스페이스 안에 넣는 단순한 방법입니다. – Mike

+0

아, 알았어. 이 경우 나는'Messages'를 단지 객체라고'메시지 = {}'로 만들고 그 객체의 속성을 설정할 것을 권한다. CoffeeScript의'class'는 실제로 인스턴스화 될 생성자가있는 객체를 대상으로합니다. –

관련 문제