2012-01-25 11 views
14

私はすべての公式source code上で見ると、ここでのサンプルコードでThomas Davisでチュートリアルのブログでも、使用することをBACKBONE.JSで「オプション」とは何ですか:Backbone.jsの「オプション」とは何ですか?

Friends = Backbone.Collection.extend({ 
    initialize: function (models, options) { 
        this.bind("add", options.view.addFriendLi); 
       } 
}); 

私は他のチュートリアルが表示されませんそれを使用して、そしてそれを言及している医師さえも。 options.view.addFriendLi

答えて

16

optionsは、通常、データ/コンテキスト/コンテキストを提供するキー/値のペアのjavascriptオブジェクトですが、ハードコードされた「オプション」ではなく、コンテキスト形式([options]メソッド呼び出しの引数/設定順序付けられた議論とは対照的に、名前付きの議論のように考える。例えば

:呼び出される関数は、このオブジェクトを使用する方法

var makePerson = function(name, options) { 
    var person = {}; 
    person.name = name; 
    person.age = options.age; 
    return person; 
}; 

var me = makePerson('Alex', {age:30}); // In 3 days... scary :(

は、その関数までです。

Collection.initialize()のバックボーンのドキュメントでは、オプションオブジェクトのどのキーが使用されているか期待されていないようですが、残念です。ソースを見ることなく、伝える方法はありません。しかし、あなたの例では、viewキーが必要であることを示すようです。

var friendsCollection = new Friends(userModels, {view: someBackboneView}); 

これは単に多くの図書館が使用する傾向があり、それに特別なことはありません。しかし、通常、関数呼び出しに渡されるオブジェクトの多くのキーは、多くの引数を使用して呼び出すファンクションよりも優れています。各値には、それぞれの値が何であるかを明確にするラベルが付いているからです。

今ここで、ビットさらに探し

http://documentcloud.github.com/backbone/docs/backbone.html#section-53

それはそれだけのオプションでは、単一のキー受け入れCollection.initialize()次のようになります。comparatorを。ここでは、コレクションでモデルをソートするために使用する関数を定義することができます。 http://documentcloud.github.com/backbone/#Collection-comparator

あなたの例の中に、あなたはこのようにそれを呼ぶだろうとの作業:

var friendsCollection = new Friends(userModels, { 
    view: someBackboneView, 
    comparator: function(friend) { 
    return friend.get('age'); 
    } 
}); 
+1

私はあなたの答えが好きです。私は間違いなくそれから何かを学んだので、+1、しかし私はBackbone.jsの文脈でそれを求めています。私が求めているのはオプションではなく、Backbone.jsをハードコードした「オプション」です。しかし、別のコンテキストでの素晴らしい答え:) –

+0

このメソッドでは、バックボーンがオプションをどのように処理するかについて詳しく編集されています。 –

+0

それは意味があります。ありがとうございました:) –

1

さて、あなたはでのチュートリアルのブログを見ることができます

.... 
AppView=Backbone.View.extend({ 
    el:$("body"), 
    initialize:function(){ 
     this.friends=new Friends(null, {view:this}); 
     //Create a friends collection when the view is initialized, 
     //Pass it a reference to this view to create a connection between the two 
    } 
.... 

キーがthis.friends=new Friends(null, {view:this});

です:サンプルコードでのトーマス・デイビスは、 Backbone.View.extendは、あなたの質問にお答えします上記のコードから

initialize:function(models, options)

あなたが知ることができる、「オプション」==「{ビュー:この}」

これは、パラメータの新しい友人とパス({ビュー:これを})を作成します、それ自身を上記の関数に渡します。

コードoptions.view.addFriendLiを組み合わせると、なぜ.addFriendLiというメソッドを呼び出すことができるのか分かります。

関連する問題