0

私はほとんどすべてを試し、例を正確にコピーしました:[ここに][1]

しかし、私はそれがうまくいくのを見ることができません。イベント バインディングについて複数の代替案を試しましたが、どれも機能していないようです。考えられる理由は何ですか?

Div コンテナ;

ロード

私のイベントバインディングトライアル。

el: '#container',
        events: {
            "click button": "render"
        }

また;

el: '#container',
    events: {
        "click button#add": "render"
    }

そして最後にこれ。

el: '#container',
events: {
            "click input[type=button]": "doSearch"  
        }

私がこれを間違っている可能性はありますか?さらに、動作させると、divの各機能にクリックイベントを割り当てて、より一般的な「クリックボタン」の代わりにIDを指定することは可能でしょうか: "render" ?

注:コードタグでラップされた html コードを取得できませんでした。

4

2 に答える 2

2

入力ボタンはコンテナの子要素ですか? バックボーンは、ビューの要素の範囲外の要素を見つけません。

#add が #container の子要素である場合、「クリック #add」を実行できます。

于 2012-05-18T19:40:34.923 に答える
1

まず第一に、あなたのコードはバックボーン ビューからのものであると仮定しますよね?

#container div は DOM に存在しますか? あなたの例はクリック時にレンダリングを呼び出していることに気付きましたが、通常、レンダリングは実際に HTML テンプレートをレンダリングするコードを配置する場所です。

BackboneJS の delegateEvents ドキュメントでは、例として次の render 呼び出しを使用しています。

 render: function() {
    $(this.el).html(this.template(this.model.toJSON()));
    return this;
  },

これが発火するまで、この例では技術的にクリックできるものが何もないことに注意してください。

これをテストする簡単な方法は、アプリケーションの起動後にコンソールでこれを実行することです。

$("#container")

これが空の "[ ]" を返す場合、問題があることがわかります。考慮すべき 2 番目のことは、実際にクリック可能かどうかです (存在する可能性がありますが、位置またはサイズが原因でクリック可能ではないため)。

したがって、最終的なテストは、コンソールでこれを実行し、div をクリックしてみることです。

$("#container").click(function() { alert('clicked');});
于 2012-05-18T19:40:06.180 に答える