CNode

backbonejs 视图事件重复执行

问答
Lluoshizheng发布于12 年前最后回复12 年前10 回复5722 浏览0 收藏

我有2个视图,分别是显示不同的列表。但是在切换列表的时候,在点击列表下面的分页按钮出现重复请求服务器的地址,并且重复请求的次数是随着我切换两个视图的次数来不断增加的。不知道是什么原因。如果是单个视图的时候,请求是正常的。有谁对backbonejs比较熟悉的吗? 还是我程序本身有问题。 第一次切换视图: GET /Pictures/:PageSize/:PageIndex?PageSize=20&PageIndex=3 200 14ms GET /Pictures/:PageSize/:PageIndex?PageSize=20&PageIndex=3 200 17ms

第二次切换视图: GET /Pictures/:PageSize/:PageIndex?PageSize=20&PageIndex=3 200 14ms GET /Pictures/:PageSize/:PageIndex?PageSize=20&PageIndex=3 200 17ms GET /Pictures/:PageSize/:PageIndex?PageSize=20&PageIndex=3 200 18ms

查看回复

回复 (10)

Q
qinyang912#1·12 年前

很明显,视图没有得到正常消除,事件一直在重复绑定

L
luoshizheng#2·12 年前
引用 qinyang912很明显,视图没有得到正常消除,事件一直在重复绑定

@qinyang912 请问该如何释放视图,每次都让它从新加载呢。 因为我列表页面我是用过模版来直接加到主页上的。

Q
qinyang912#3·12 年前
引用 luoshizheng@qinyang912 请问该如何释放视图,每次都让它从新加载呢。 因为我列表页面我是用过模版来直接加到主页上的。

@luoshizheng 关闭视图的时候,要remove,才能把视图和视图绑定的事件给清理掉。

T
tanker327#4·12 年前

试试这个,把你之前绑定的都取消掉。需要这个view的时候再绑定。 undelegateEvents() Removes all of the view's delegated events. Useful if you want to disable or remove a view from the DOM temporarily.

M
macross2005#5·12 年前
引用 luoshizheng@qinyang912 关闭视图? 我需要给这个视图bind一个close 方法吗? 刚接触backbone, 还请详细讲解一下,谢谢。

backbone的view 里有个remove的方法 view.remove() Removes a view from the DOM, and calls stopListening to remove any bound events that the view has listenTo’d.

C
chenshaonian#6·12 年前

因为你把事件重复绑定在同一节点上了,所以每次new视图的时候都会重新绑定事件。

L
luoshizheng#7·12 年前
引用 chenshaonian因为你把事件重复绑定在同一节点上了,所以每次new视图的时候都会重新绑定事件。

@chenshaonian 嗯是的, 因为这个功能是通用的, 所有我每个视图加载的时候都对它进行了绑定事件。 就是不知道如何释放这个视图, 如果我新开一个页面就是正常了。

L
luoshizheng#8·12 年前
引用 tanker327试试这个,把你之前绑定的都取消掉。需要这个view的时候再绑定。 undelegateEvents() Removes all of the view's delegated events. ...

@tanker327 undelegateEvents() 用当前视图调用吗, 但是我试过了, 好像还是不行呢。

L
luoshizheng#9·12 年前
引用 qinyang912@luoshizheng 关闭视图的时候,要remove,才能把视图和视图绑定的事件给清理掉。

@qinyang912 关闭视图? 我需要给这个视图bind一个close 方法吗? 刚接触backbone, 还请详细讲解一下,谢谢。

C
chenshaonian#10·12 年前
参与回复
登录后即可参与回复。登录