我正在尝试动态扩展 Backbone.js 视图的渲染功能。在这样做时,我希望能够在调用渲染之前和之后触发一个事件。我尝试覆盖该函数并调用旧函数,该函数有效,但所有绑定到渲染函数的模型都失去了它们的绑定。我目前拥有的代码如下,如果我传入创建的 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') 事件。然而,并不是每个视图的模型都会以这种方式绑定。很感谢任何形式的帮助!谢谢!