【问题标题】:Issue in caching using coffeescript使用咖啡脚本缓存的问题
【发布时间】:2012-06-29 22:44:19
【问题描述】:

我有这个脚本

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

这工作正常。咖啡脚本哪里出了问题?

【问题讨论】:

  • 咖啡脚本版本的缩进看起来不对。
  • 你是对的,但在源代码中缩进是可以的。这不是问题:(

标签: javascript backbone.js coffeescript


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-11
      • 2021-11-21
      • 1970-01-01
      • 2013-08-03
      • 1970-01-01
      • 2013-01-09
      • 2012-08-26
      • 1970-01-01
      相关资源
      最近更新 更多