Backbone.js事件绑定.像Jquery中的“代表”一样?

我是骨干的新人.我在Backbone.js中看到,事件绑定:
var PersonView = Backbone.View.extend({
    ....
    events : {
        "click button.btnSay" : "saySomething"
    },saySomething : function(){
        ....
    }
    ...
});

…不需要button.btnSay在调用时就存在,就像Jquery中的“delegate”一样.

现在,问题是,我们可以将html页面中的任何按钮更改为.btnSay(由Firebug等).他们最终得到听众.我们该如何预防呢?

解决方法

它与委托不同,它使用delegate(除非事件没有选择器). Backbone中的事件绑定如下所示:
if (selector === '') {
  $(this.el).bind(eventName,method);
} else {
  $(this.el).delegate(selector,eventName,method);
}

所以它在视图的元素上使用delegate.这至少将事件限制在视图内的元素.

您无法阻止人们在调试器中将元素和事件混淆在一起.他们可以更改HTML,CSS,甚至编辑JavaScript,因此您无法阻止他们在您的页面上造成麻烦.您可以阻止他们在您的服务器上混乱,只是不要信任任何Backbone发送到您的服务器,并验证一切与验证外部世界其他任何东西一样.

基本上,不要浪费你的时间,因为搞错了你的HTML /事件/ JavaScript,一些人用砖头砸碎了自己的脸.让他们自己伤害自己想要的一切.但是通过不信任外部任何东西来保护您的服务器(并且您的服务器甚至不应该信任自己).

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...