微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 为什么我的CoffeeScript / backbone.js事件没有触发?

我正在尝试熟悉CoffeeScript和backbone.js,而且我一定是缺少某些东西.

这个咖啡脚本:

MyView  = Backbone.View.extend 
   events: { 
     "click" : "testHandler" 
   } 

   testHandler: -> 
     console.log "click handled" 
     return false 

 view = new MyView {el: $('#test_container')} 
 view.render()

生成以下JavaScript:

(function() {
  var MyView,view;
  MyView = Backbone.View.extend({
    events: {
      "click": "testHandler"
    },testHandler: function() {
      console.log("click handled");
      return false;
    }
  });
  view = new MyView({
    el: $('#test_container')
  });
  view.render;
}).call(this);

但是当我点击test_container时,点击事件不会触发testHandler.

如果我将输出JavaScript更改为:

$(function() {
  var MyView,testHandler: function() {
      console.log("click handled");
      return false;
    }
  });
  view = new MyView({
    el: $('#test_container')
  });
  view.render;
});

删除调用(this)并附加$,一切正常工作.我失踪了什么

解决方法

(function () {}).call(this);

只是在指定接收器时立即调用匿名函数方法.它的工作方式基本相同:

this.method = function () {};
this.method();

$(function(){}),至少在jQuery中是缩写

$(document).ready(function () {})

当DOM树已经完全构造时运行给定的函数.这似乎是您的Backbone.View.extend函数正常工作的必要条件.

原文地址:https://www.jb51.cc/js/152437.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐