作者tomin (弱水三千 只取一瓢饮)
看板Ajax
标题[问题] 如何管理大量事件绑定、错误处理
时间Sat Aug 24 12:47:03 2013
我有个页面要做许多事件绑定
最简单的写法是像这样
window.onload = function() {
bind('.delete_button_1').(function() {});
bind('.delete_button_2').(function() {});
...etc
bind('.add_button_1').(function() {});
bind('.add_button_2').(function() {});
...etc
}
这样写虽然会动没问题 但写很多行这类的code看起来很杂 会不好维护
目前我是这样改 尝试模组化 (改法一)
window.onload = function() {
function initDelete() {
bind('.delete_button_1').(function() {});
bind('.delete_button_2').(function() {});
}
function initAdd() {
bind('.add_button_1').(function() {});
bind('.add_button_2').(function() {});
}
initDelete();
initAdd();
}
看起来是比较容易懂 但其实是有点没必要的包装
不过这麽做有个好处是 会比较容易做错误处理
比如delete是次要的功能 可以允许失败 就可以try catch:
try {
initDelete();
} catch (e)
}
initAdd()
其实还有个改法二 写注解区隔就好 >.<
/************************************************
* initDelete start
************************************************
*/
bind('.delete_button_1').(function() {});
bind('.delete_button_2').(function() {});
...etc
/*************************************************
* initDelete end
*************************************************
*/
1.但改法一二其实都不够好 想知道还有什麽更好的写法?
比如是不是可以用OO化的module pattern
定义delete, add为public function
再定义init()去load这些public function?
2.次要功能(可允许失败) 建议全部用try catch包起来吗?
还是最好都全部成功 不会有失败的可能 就不用try catch
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 115.82.115.113
※ 编辑: tomin 来自: 115.82.115.113 (08/24 12:52)
1F:→ noxhsu:有array的话,可以用$.each扫看看? 08/24 13:04
2F:推 s25g5d4:何不考虑 event delegate 08/24 14:08
3F:→ tomin:已经用delegate罗 只是delegate清单很长 想整理 08/24 21:18
4F:→ dlikeayu:用backbone的View去建你的按钮或是按钮群组 08/26 09:28
5F:→ dlikeayu:非常好管理 08/26 09:28
6F:→ dlikeayu:你要的功能能完完全全自定义在里面 08/26 09:29
7F:→ dlikeayu:可以把一个按钮当一个Class去new 出来 08/26 09:30
8F:→ dlikeayu:也可以把你的按钮群组当一个物件new 出来 08/26 09:30
9F:→ dlikeayu:当然都是用Class 去写了,这管理弹性可想而知的简单方便 08/26 09:31
10F:→ tomin:楼上说得很令人心动 我再研究看看 感谢 08/26 22:51