Javascript 使用coffeescript进行缓存时出现问题
我有这个剧本Javascript 使用coffeescript进行缓存时出现问题,javascript,backbone.js,coffeescript,Javascript,Backbone.js,Coffeescript,我有这个剧本 class Raffler.Views.EntriesIndex extends Backbone.View div: $('#input') initialize: -> console.log @div.val() 正如你所看到的,这是一个主干的观点 我想将$('#div')缓存到一个变量中并调用它。请参阅console.log@div.val() 但这似乎不起作用 使用普通javascript,我可以编写如下内容: var ToDo
class Raffler.Views.EntriesIndex extends Backbone.View
div: $('#input')
initialize: ->
console.log @div.val()
正如你所看到的,这是一个主干的观点
我想将$('#div')
缓存到一个变量中并调用它。请参阅console.log@div.val()
但这似乎不起作用
使用普通javascript,我可以编写如下内容:
var ToDoView = Backbone.View.extend({
div : $('#input'),
initialize: function(){
console.log(this.div.val());
}
})
这很好用。coffeescript哪里出了问题?coffeescript类的工作方式与主干的扩展机制的工作方式存在一些差异,这可能是您遇到的问题。但我猜这不是问题所在。在运行此代码的确切时间和位置上也可能存在差异。如果您将javascript代码放在执行coffeescript代码的同一位置,那么它工作正常吗?另一个相关的注意事项是,问题到底是什么,即您收到了哪些错误消息?@div是否已初始化?很可能在代码运行时,
$(“#input”)
元素尚未加载
在类中缓存值的问题是,该类很可能是在jQuery.ready回调之外定义的(在DOM完成加载之前),因此此时您的类将$(“#input”)
设置为@div
jQuery实际上找不到该元素
您可以在
initialize
函数中设置@div
,因为这很可能在加载DOM后调用。对于coffeescript版本,您的缩进看起来是错误的。您是正确的,但在源代码中缩进是正常的。这不是问题所在:(