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

前端之家收集整理的这篇文章主要介绍了javascript – 为什么我的CoffeeScript / backbone.js事件没有触发?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试熟悉CoffeeScript和backbone.js,而且我一定是缺少某些东西.

这个咖啡脚本:

  1. MyView = Backbone.View.extend
  2. events: {
  3. "click" : "testHandler"
  4. }
  5.  
  6. testHandler: ->
  7. console.log "click handled"
  8. return false
  9.  
  10. view = new MyView {el: $('#test_container')}
  11. view.render()

生成以下JavaScript:

  1. (function() {
  2. var MyView,view;
  3. MyView = Backbone.View.extend({
  4. events: {
  5. "click": "testHandler"
  6. },testHandler: function() {
  7. console.log("click handled");
  8. return false;
  9. }
  10. });
  11. view = new MyView({
  12. el: $('#test_container')
  13. });
  14. view.render;
  15. }).call(this);

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

如果我将输出JavaScript更改为:

  1. $(function() {
  2. var MyView,testHandler: function() {
  3. console.log("click handled");
  4. return false;
  5. }
  6. });
  7. view = new MyView({
  8. el: $('#test_container')
  9. });
  10. view.render;
  11. });

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

解决方法

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

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

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

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

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

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

猜你在找的JavaScript相关文章