1

我将在 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 不是一个函数”。有人可以帮我吗?我在这里滥用类语法吗?我的目标是将分页器的状态封装在分页器对象(实例)中。在启动时,我想做一些初始化工作,这些初始化工作是通过 AJAX 调用“路由”来完成的,“路由”是一个 HTTP 端点。

谢谢

4

1 回答 1

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 输出,您可以轻松看到这一点。

于 2012-12-08T12:50:17.973 回答