Coffeescript类,方法和实例变量

时间:2012-12-08 12:40:56

标签: class variables coffeescript

我将在Coffeescript中实现某种Pagniator类。 Paginator类应该包含有关currentPage,maxPages,columnNames,...

的信息

所以我的第一个方法就是:

class Paginator
  currentPage = -1
  rowCount = -1
  pageSize= -1
  columnNames = null
  constructor: (@config) ->

  setup: ->
    @config.ajax(
        cache: false
        type: "GET"
        contentType: "application/json"
        dataType: "json"
        success: (data) =>
          this.configurationReceived(data)

    )

  configurationReceived: (data) =>
     this.storeConfig(data)
     this.setupGUI()
     this.loadPage(1)
     $('.pagination ul li').click( ->
         Paginator.loadPage($(this).text())
         return false
      )

  storeConfig: (jsonData) =>
    rowCount = jsonData['rowAmount']
    pageSize = jsonData['pageSize']
    columns = jsonData['columns']
    return

@config是来自Play 2.0 Framework jsroutes对象的jsRoutes.controllers.xxx。 在页面加载我做

paginator = new Paginator jsRoutes.controllers.PlayerController.paginatorConfiguration()
paginator.setup() 

但是我总是得到“this.storeConfig不是一个函数”。有人可以帮助我吗?我在这里滥用了类语法吗?我的目标是将Paginator的状态封装在Paginator对象(实例)中。在启动时,我想做一些初始化的事情,这是通过AJAX调用到一个HTTP端点的“路由”完成的。

由于

1 个答案:

答案 0 :(得分:1)

这里的缩进似乎有问题:

$('.pagination ul li').click( ->
    Paginator.loadPage($(this).text())
    return false
 )   # <---

应该是

$('.pagination ul li').click( ->
    Paginator.loadPage($(this).text())
    return false
)

因此,包含方法“storeConfig”定义的以下代码不属于该类,因此“this.storeConfig”不是函数。

如果您将代码复制到coffeescript.org的“Try-coffescript”表单并检查JavaScript输出,则可以轻松看到此信息。