Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用coffeescript进行缓存时出现问题_Javascript_Backbone.js_Coffeescript - Fatal编程技术网

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版本,您的缩进看起来是错误的。您是正确的,但在源代码中缩进是正常的。这不是问题所在:(