1

所以我正在为一个项目编写一些咖啡脚本,并且我正在尝试在一个类中创建一些静态属性。我一直在关注代码库中的另一个文件,它成功地做了同样的事情,但我的不工作。

我的代码

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 时,这些 init 函数的调用方式相同。这两个类都是静态类,永远不会创建它们中的任何一个的实例。有谁知道可能是什么问题?

4

1 回答 1

4

init函数正在设置一个实例变量,但您的toggleUnreadConversations函数试图引用它,就好像它是您的类的属性一样。

您应该使用@来引用设置的实例变量init

class Messages
  @toggleUnreadConversations: ->

    # reference the instance variable
    @ViewOnlyUnread = !@ViewOnlyUnread

  @init: ->
    @ViewOnlyUnread = false
于 2013-02-20T20:21:48.203 回答