我有这个脚本
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());
}
})
这很好用。我在哪里吃咖啡?
答案 0 :(得分:0)
Coffeescript类的工作方式和Backbone的扩展机制的工作方式存在一些差异,这可能是您遇到的问题。但我猜这不是问题所在。您运行此代码的确切时间和位置可能存在差异。如果您将javascript代码放在执行coffeescript代码的相同位置,那么它是否正常工作?在相关的说明中, exacly 是什么问题,即你得到了什么错误信息? @div是否已初始化?
答案 1 :(得分:0)
代码运行时,$("#input")
元素可能尚未加载。
在类中缓存值的问题是该类很可能是在jQuery.ready回调之外定义的(在DOM加载完成之前),所以当前您的类将$("#input")
设置为{{ 1}} jQuery实际上并没有找到该元素。
您可以在@div
函数中设置@div
,因为很可能在DOM加载后调用它。