1

我有这个脚本

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());
    }
})

这工作正常。我在哪里用咖啡脚本出错了?

4

2 回答 2

0

Coffeescript 类的工作方式和 Backbone 的扩展机制工作方式存在一些差异,这可能是您遇到的问题。但我猜这不是这里的问题。您运行此代码的确切时间和地点也可能存在差异。如果您将 javascript 代码放在执行咖啡脚本代码的同一位置,那么它可以正常工作吗?在相关说明中,问题究竟什么,即您收到什么错误消息?@div 是否已初始化?

于 2012-06-29T14:43:30.890 回答
0

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

在类中缓存值的问题在于,该类很可能是在 jQuery.ready 回调之外定义的(在 DOM 完成加载之前),因此目前您的类设置$("#input")@divjQuery 实际上并没有找到该元素。

您可以@divinitialize函数中进行设置,因为它很可能会在 DOM 加载后被调用。

于 2012-06-29T14:44:19.027 回答