Backbone.jsビューのレンダリング関数を動的に拡張しようとしています。そうすることで、renderが呼び出される前後にイベントを発生させることができるようにしたいと思います。関数を上書きして古い関数を呼び出してみましたが、これは機能しますが、render関数にバインドするすべてのモデルはバインドを失います。私が現在持っているコードは次のとおりです。作成したBackbone.jsビューを渡しました。
function bindRenders(view) {
view.render = (function() {
var cachedRender = view.render;
return function() {
console.log("before render");
cachedRender.apply(this, arguments);
console.log("after render");
};
}());
}
繰り返しますが、上記のコードは機能しますが、レンダリング関数にバインドされているすべてのモデルは次のようになります。
this.model.on('change', this.render, this);
壊す。私が見つけた唯一の解決策は、関数を上書きした後、モデルの.on('change')イベントを再バインドすることです。ただし、すべてのビューのモデルがこの方法でバインドされるわけではありません。どんな助けでも大歓迎です!ありがとう!