使用coffeescript进行缓存的问题

时间:2012-06-29 11:14:14

标签: 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 ToDoView = Backbone.View.extend({
    div : $('#input'),
    initialize: function(){
         console.log(this.div.val());
    }
})

这很好用。我在哪里吃咖啡?

2 个答案:

答案 0 :(得分:0)

Coffeescript类的工作方式和Backbone的扩展机制的工作方式存在一些差异,这可能是您遇到的问题。但我猜这不是问题所在。您运行此代码的确切时间和位置可能存在差异。如果您将javascript代码放在执行coffeescript代码的相同位置,那么它是否正常工作?在相关的说明中, exacly 是什么问题,即你得到了什么错误信息? @div是否已初始化?

答案 1 :(得分:0)

代码运行时,$("#input")元素可能尚未加载。

在类中缓存值的问题是该类很可能是在jQuery.ready回调之外定义的(在DOM加载完成之前),所以当前您的类将$("#input")设置为{{ 1}} jQuery实际上并没有找到该元素。

您可以在@div函数中设置@div,因为很可能在DOM加载后调用它。