【问题标题】:Simple Backbone.JS in CoffeeScript ErrorsCoffeeScript 错误中的简单 Backbone.JS
【发布时间】:2012-06-04 03:55:57
【问题描述】:

我开发了一个非常简单的 Backbone.JS 应用,用于学习 CoffeeScript + Backbone.JS:

class Todo extends Backbone.Model 
    defaults:
        title: ''
        priority: 0
        done: false

class Todo extends Backbone.Collection
    model: Todo
    localStorage: new Backbone.LocalStorage("Todos")

t = new Todo({ title: 'todo 1' })
console.log t

但我得到了(看起来很像一个无限循环)

<error>
b.extend
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel
f.extend.add
f.extend.reset
g.Collection
Todo
f.extend._prepareModel

使用普通的 JS 我定义类和继承

Todo = Backbone.Model.extend({})

但在 CoffeeScript 中它的

class Todo extends Backbone.Model

它们是一样的吗?我不这么认为,这是问题的原因吗?

【问题讨论】:

    标签: backbone.js coffeescript


    【解决方案1】:

    您的收藏中有错字,您想将其命名为Todos,而不是Todo

    class Todos extends Backbone.Collection
        model: Todo
        localStorage: new Backbone.LocalStorage("Todos")
    

    如果我这样做:

    class Todo extends Backbone.Model 
    class Todo extends Backbone.Collection
        model: Todo
    
    t = new Todo(title: 'todo 1')
    console.log t​​​
    

    我收到“超出最大调用堆栈大小”。错误:http://jsfiddle.net/ambiguous/FTCr2/

    但如果集合被称为Todos,一切正常:http://jsfiddle.net/ambiguous/RrA2D/

    您的问题似乎是您的集合的 model 属性是集合本身,因此当集合试图创建一个实际上是集合的模型时,您最终会出现无限递归......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      相关资源
      最近更新 更多