我有一个代表文件夹的视图。我有一堆子视图,这个文件夹视图创建,每个子视图代表该文件夹中的唯一缩略图。事实证明,这些子视图的渲染方法中的每一个都被多次调用(3)。有没有办法找出如何调用视图的渲染方法。例如,如果模型元数据被改变,则存在可以呈现触发事件的不同位置。它已成为一个巨大的混乱,我正在寻找一种方法来调试主干视图,以了解什么是完全触发渲染方法。
答案 0 :(得分:1)
我总是调试事件的方式是:
view.on('all', function(eventName){
console.log('Name of View: ' + eventName);
});
您可以在视图,模型或集合上执行此操作。
示例强>:
http://jsfiddle.net/CoryDanielson/phw4t/6/
我手动添加了request
和sync
方法来模拟骨干网实际执行的方式。 rendered
事件是自定义的 - 没有任何内容可以监听它。只是为了告诉你它是如何/何时发生的。
答案 1 :(得分:1)
正如您所要求的,这是一个如何覆盖trigger
方法的示例。请注意,您必须为所有类型的类(模型,视图,集合,路由器)覆盖它。
var trigger = Backbone.Model.prototype.trigger;
Backbone.Model.prototype.trigger = Backbone.View.prototype.trigger = Backbone.Collection.prototype.trigger = Backbone.Router.prototype.trigger = function(name) {
trigger.apply(this, arguments);
console.log(this, 'triggered the event', name, '.').
}
通过单独覆盖每个方法以在日志中添加对象类型,可以更具体。但是你有了一般的想法。
答案 2 :(得分:0)
您可以试试backbone.debug
。应该让您了解正在发生的事件。