1

我正在尝试跟踪我的应用程序中的所有僵尸,并更好地了解事件绑定是如何发生的。我有一个将它的集合"add"事件绑定到它的render函数的视图。

_.bindAll(this, "render");
this.collection.bind("add", this.render);

因此,如果我在渲染函数中记录某些内容,我可以在控制台中看到,在用户通过 UI 添加新模型后,渲染发生了两次。控制台输出如下所示:

rendering                                  index.js?body=1 (line 88)

POST http://localhost:3000/tasks           jquery.js?body=1 (line 8103)

rendering                                  index.js?body=1 (line 88)

我想知道为什么会这样。我知道模型只被添加到集合中一次,这让我认为该事件应该只被触发一次。然后我不明白为什么render被执行了两次。我在这里查看了类似的问题,但它有所不同,因为我使用的是addevent 而不是change.

4

3 回答 3

1

我认为您调用了两次渲染。

Yoy正在做这样的事情:

var yourView = new YourDefinedView();
yourView.render(); // this is your manual call to render

//here you call to the server and when data arrives is the second render
this.collection.fetch();

我不认为当集合收到新项目时,render 是最好的绑定方法。

查看此示例,我们如何绑定特定事件以将集合中的项目添加到视图: http ://danielarandaochoa.com/backboneexamples/blog/2012/02/22/real-world-usage-of-a-backbone-collection /

于 2012-08-07T02:27:50.880 回答
1

你实例化你的视图两次了吗?它可能是2种不同的观点。

于 2012-08-06T21:45:05.413 回答
0

事实证明,render通过 Event Aggregator 有一个额外的绑定。它是由另一个开发人员添加的。

于 2012-08-15T14:55:37.967 回答