1

Backbone.js の使用方法について調べていますが、Backbone ライブラリの最新バージョンと比較して、オンラインで入手できるすべての記事が古くなっているようです。これは役に立ちません!

たとえば、nettuts の記事 (Google の検索結果で最初に表示) で使用に関する議論Backbone.Controllerが行われているのを見たことがありますが、これは Backbone から削除されているため、わかりにくくなっています。

しかし、私の質問は、バックボーンのイベント オブジェクトに関するものです。

「ビュー」を使用すると、次のことができます...

var ContactsView = Backbone.View.extend({
    initialize: function(){
        console.log('View initialized');
    },

    events: {
        'change select': 'displaySelected'
    },

    displaySelected: function (event) {
        console.log('get model data and display selected user', event);
    }
});

events...しかし、プロパティを で使用することはできませんCollection。代わりに、メソッド内から jQuery の bind メソッドを使用する必要がありますinitialize...

var Contacts = Backbone.Collection.extend({
    model: Contact,

    initialize: function(){
        this.bind('add', this.model_added, this);
    },

    model_added: function(){
        console.log('A new model has been created');
    }
});

……そもそも、なんで?

しかし、もっと重要なことは、3 番目の引数thisは何ですか? bindjQuery のドキュメントを調べたところ( bindBackbone サイトには言及されていなかったため)、3 番目の引数がありませんか?

4

2 に答える 2

2

3 番目の引数はオプションです。コンテキストをハンドラー関数に渡す方法を提供します。

JavaScript では、thisコンテキストに依存します。内部にあるオブジェクトに応じて変化する可能性があり、変化します。thisオプションの引数に渡すことでcontext、イベントをバインドしたオブジェクトのスコープに沿って渡します。そうすることで、同じコンテキストをハンドラーで操作することができます。

于 2012-07-28T16:55:28.863 に答える
2

1)Backbone.Controllerは削除されず、 に名前が変更されました。マニュアルのほかに、変更ログBackbone.Routerを確認できます。

2).bindは に名前が変更され.on、3 番目の引数 ( context) はバックボーンドキュメントで確認Backboneできます。_.bindAllUnderscore this

3) eventsa の内部にViewは、DOM イベント (クリック、マウスオーバー、マウスダウンなど) をリッスンするものがあります。もちろん、どの DOM 要素がトリガーされたかがわかります。.bindまたは.on、 an が呼び出されたときに何かを実行する.triggerとします。バックボーン コード全体がいっぱいです。必要に応じて、model.add、model.remove、collection.reset などの通知を受け取ることができるカスタム トリガー。バックボーンのドキュメントも確認してください。

于 2012-07-28T16:39:41.110 に答える