我有一个代表文件夹的视图。我有一堆子视图,这个文件夹视图创建,每个代表该文件夹中的唯一缩略图。事实证明,每个子视图的渲染方法都被多次调用(3)。有没有办法找出视图的渲染方法是如何被调用的。有不同的地方可以呈现触发事件,例如,如果模型元数据被更改。它已经变得一团糟,我正在寻找一种调试主干视图的方法,以了解究竟是什么触发了渲染方法。
问问题
2060 次
3 回答
1
我总是调试事件的方式是:
view.on('all', function(eventName){
console.log('Name of View: ' + eventName);
});
您可以在视图、模型或集合上执行此操作。
示例:http:
//jsfiddle.net/CoryDanielson/phw4t/6/
我手动添加了request
andsync
方法来模拟主干的实际执行情况。该rendered
事件是自定义的——没有人听它。只是为了向您展示它是如何/何时发生的。
于 2013-04-16T03:43:29.377 回答
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, '.').
}
您可以通过单独覆盖每个方法以在日志中添加对象类型来更具体。但是你明白了一般的想法。
于 2013-04-16T07:29:57.717 回答
0
你可能会backbone.debug
尝试一下。应该让您深入了解正在触发的事件。
于 2013-04-15T21:58:54.987 回答