1

Backbone.js は初めてです。v0.9.2 アプリで CoffeScript を使用しています。アプリは「正常に」動作initialize()しますが、ビューのメソッドは呼び出されていません。イベントも適切にバインドされていません。なぜそうではないのかを理解しようとしています。イベントを要素にバインドする他の (手動) 方法を使用していますが、そうではありません。

アプリはこれでインスタンス化されます:

window.Site =
  Models: {}
  Collections: {}
  Views: {}
  Routers: {}
  init: -> 
    new Site.Routers.MyRouter()
    Backbone.history.start()

$(document).ready ->
  Site.init()

ルーター:

class Site.Routers.MyRouter extends Backbone.Router
    routes:
        '': 'index'

    initialize: ->
        # some code here (this IS being called)

    index: =>
        # this is also being called since I am trying mysite.com/
        view = new Site.Views.MyView()
        $('#someId').html(view.render().el)

景色:

class Site.Views.MyView extends Backbone.View

    template: JST['views/index']

    events:
        'click .someElement': 'someMethod'

    inititalize: ->
        console.log "hello" # NOT CALLED
        _.bindAll @
        @

    render: =>
        # draw stuff (this works)
        @

ビューはうまく描画されます。なぜinitialize呼び出されないのですか?

ありがとう!

4

3 に答える 3

17

正しくつづる必要がありますinitialize=p

inititalize: -> # should be `initialize: ->`
  console.log "hello" # NOT CALLED
于 2012-09-24T17:48:28.780 に答える
0

私はCoffeeScriptを書いていませんが、初期化されたビューのインスタンスを見る唯一の場所はルーターです:

index: =>
     view = new Site.Views.MyView()

ルーターのインデックスが呼び出されていないため、ビューの初期化が呼び出されていないと思われます。ビューを拡張しても、ビューのインスタンスは作成されず、ビューのカスタマイズされた定義が作成されます。

HTH。

于 2012-09-24T17:37:23.207 に答える