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は関数ではありません」というメッセージが常に表示されます。誰かがそれについて私を助けることができますか? ここでクラス構文を誤用していませんか? 私の目的は、Paginator の状態を Paginator オブジェクト (インスタンス) にカプセル化することです。起動時に、HTTP エンドポイントである「ルート」への AJAX 呼び出しを介して行われるいくつかの初期化を行いたいと考えています。

ありがとう

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 に答える