2012-06-04 52 views
0

我有一個非常簡單的應用程序Backbone.js的發展,學習CoffeeScript的Backbone.js的+:簡單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 

他們是一樣的嗎?我不這麼認爲,這是問題的原因嗎?

回答

2

你有你的收藏中有排印錯誤,你怎麼稱呼它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屬性是集合本身,所以你結束了無限遞歸作爲集合試圖創建一個模型實際上是收集...

相關問題