0

バックボーンには、いじっているサンプルのシングルページアプリケーションがあります。アイデアは、ビューの更新をトリガーするボタンがあるということです。イベントハンドラーに、呼び出された要素ではなく、「これ」をバックボーンビューとして記憶させようとしています。どれだけドキュメントを読んでも、この精神的なこぶを乗り越えることはできないようです.

私の見解では、私は持っています

initialize: function() {'
  //i am trying to say, call render on this view when the button is clicked. I have tried all of these calls below.
  //this.$("#add-tweet-button").click(this.render); 
  //this.$("#add-button").bind("click", this.render);

}

render 関数が呼び出されると、'this' 要素がボタンになります。欠けているものは非常に簡単です。誰かが私を助けてくれますか? また、コーディング規約が進むにつれて、これは健全ですか?

4

2 に答える 2

4

ビューの「delegateEvents」機能を使用する場合、スコープは自動的に処理されます。

var yourView = Backbone.View.extend({

  events: {
    "click #add-tweet-button" : "render"
  },

  render: function() {
    // your render function
    return this;
  }
});

これは、ビューの El の「下」にある要素でのみ機能します。しかし、あなたの例は this.$(...) を示しているので、これが当てはまると思います。

于 2012-04-03T23:06:23.807 に答える
2

@Edward M Smithは正しいですが、ビューの範囲外の要素のjqueryイベントを処理する必要がある場合は、そのように書くことができます:

var yourView = Backbone.View.extend({

    initialize: function() {
        var self = this;
        $("button").click(function () {
              self.render.apply(self, arguments);
        });

    },

    render: function(event) {
        // this is your View here...
    }       

});
于 2012-04-04T06:55:07.423 に答える