0

ChildView を数回インスタンス化します。ChildViews にはトリガーがあります。トリガーされると、モデルを設定する親の関数が呼び出されます。問題は、トリガーがトリガーされるのは 1 回だけ (少なくとも私が見ることができる場合) ですが、親は 2 つを受け取ることです。ゴースト ビューについては知っていますが、どうすればそれらを見つけることができますか? グローバル名前空間は使用せず、require.js を使用します。

vParentView = require 'views/parentview'

class vParentView

    render: ->
        view1 = new ChildView()
        view1.on 'data changed', @updateModel, @
        view2 = new ChildView()
        view2.on 'data changed', @updateModel, @
        view3 = new ChildView()
        view3.on 'data changed', @updateModel, @
        etc...

    updateModel: (data) ->
        @model.set data.attr, data.options

コンテキスト @ を削除して、updateModel() を 2 回トリガーしたビューを確認しました。したがって、同じビューが updateModel を 2 回トリガーします。

編集: ChildView のコードはやや面白くありません:

vChildView = require 'views/childview'

class vChildView

    events:
        'change input.someclass': 'onChangeInput'
        'change textarea.someclass': 'onChangeInput'

    onChangeInput: (e) ->
        @trigger 'data changed'

    render: ->
        html = _.template tpl

        @$el.html html


        @
4

2 に答える 2

1

Derick Bailey は、これに関するすばらしい詳細なブログ投稿を書きました: http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/

于 2012-08-07T16:48:35.057 に答える
0

もう少しコードが役立ちます(@Brendan Delumpaが言ったように)

物事が発生し、その原因と原因がわからないあなたのような状況では、通常、次のconsole.log('')ように各機能の下に を配置します

class vParentView

    render: ->
        console.log 'vParentView -> render'
        ...

    updateModel: (data) ->
        console.log 'vParentView -> updateModel'
        ...

この後、問題がどこにあるのかわからない場合はDeveloper Tools、同じことを2回トリガーしているものを見つけるまで、行ごとにいくつかのブレークポイントを追加します

于 2012-08-07T19:15:01.193 に答える