0

我有一个代表文件夹的视图。我有一堆子视图,这个文件夹视图创建,每个代表该文件夹中的唯一缩略图。事实证明,每个子视图的渲染方法都被多次调用(3)。有没有办法找出视图的渲染方法是如何被调用的。有不同的地方可以呈现触发事件,例如,如果模型元数据被更改。它已经变得一团糟,我正在寻找一种调试主干视图的方法,以了解究竟是什么触发了渲染方法。

4

3 回答 3

1

我总是调试事件的方式是:

view.on('all', function(eventName){
    console.log('Name of View: ' + eventName);
});

您可以在视图、模型或集合上执行此操作。

示例:http: //jsfiddle.net/CoryDanielson/phw4t/6/

我手动添加了requestandsync方法来模拟主干的实际执行情况。该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 回答