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

前端之家收集整理的这篇文章主要介绍了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()@H_403_5@ 
 

生成以下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);@H_403_5@ 
 

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

如果我将输出JavaScript更改为:

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

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

解决方法

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

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

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

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

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

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

猜你在找的JavaScript相关文章