sef*_*ner 10 javascript jquery coffeescript backbone.js
我正在尝试熟悉CoffeeScript和backbone.js,我一定会遗漏一些东西.
这个CoffeeScript:
MyView = Backbone.View.extend
events: {
"click" : "testHandler"
}
testHandler: ->
console.log "click handled"
return false
view = new MyView {el: $('#test_container')}
view.render()
Run Code Online (Sandbox Code Playgroud)
生成以下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);
Run Code Online (Sandbox Code Playgroud)
但是当我点击时,click事件不会触发.testHandlertest_container
如果我将输出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;
});
Run Code Online (Sandbox Code Playgroud)
删除call(this)和追加$,一切都按预期工作.我错过了什么?
(function () {}).call(this);
Run Code Online (Sandbox Code Playgroud)
只是一种在指定接收器时立即调用匿名函数的方法.它的工作原理基本相同:
this.method = function () {};
this.method();
Run Code Online (Sandbox Code Playgroud)
$(function () {}),至少在jQuery中,是简写
$(document).ready(function () {})
Run Code Online (Sandbox Code Playgroud)
在完全构造DOM树时运行给定的函数.看起来这是您的Backbone.View.extend功能正常工作的必要条件.
要将CoffeeScript和jQuery一起用于应用程序脚本,请将代码放在以下模板中:
$ = jQuery
$ ->
MyView = Backbone.View.extend
events:
"click": "testHandler"
testHandler: ->
console.log "click handled"
false
view = new MyView el: $('#test_container')
view.render()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4484 次 |
| 最近记录: |