私はバックボーンへの新たなんだが、また、あなたが拡張メソッドにメソッドを含むオブジェクトを渡すことを期待他のフレームワークと4年以上の経験を持っていますが、問題はこれが作用するのに十分なきめ細かな制御を与えるものではありませんです渡されるオブジェクト内に含まれるメソッド。
さらに多くのコントロールを得るには、クロージャを渡して継承し、クロージャがオブジェクトを返すことができます。この手法は、一般に、きめ細かな制御と洗練された可能性を提供し、特定の問題を解決するために活用することができます。例えば
- バックボーン固有、:メソッドを返すクロージャ内部
、これらの方法は、2つの広いカテゴリーに分けることができます私たちは自分の別のオブジェクトから私たちのアプリケーションに固有のカスタムメソッドを返す場合は、アプリケーションに固有の
- カスタム、
を初期化し、私たちはその後、_.bindAllの「部分適用」を_.bind使用することができます&コンストラクタそれらのカスタムメソッド名に変換します。その後、一緒にすべてを置く
:
var foobar = Backbone.Model.extend(function() {
var foobarMethods = modelMethods();
return _.extend({}, foobarMethods, {
constructor: function() {
_.bind(_.bindAll, this, _.keys(foobarMethods));
// equivalent to _.bindAll(this, 'foo', 'bar') except that the above
// allow methods to be arbitrarily added or removed
},
initialize : function() {}
});
//It's possible to "mixin" these methods from another file
function modelMethods() {
return {
foo: function() {},
bar: function() {},
}
}
}());
ないあなたが指摘しようとしているのかわからは、私はそれのためにjsfiddleを出し始めていますが、アンダースコアのbindメソッドを使用してactuallの問題でそれを完了だろうか? http://jsfiddle.net/saelfaer/7fCbT/ – Sander