假設我有以下Backbone.js的模型之間的數據:和Backbone.js的模型:類型陣列的屬性維護實例
class App.Models.Article extends Backbone.Model
defaluts:
id: ''
name: ''
tags: []
以顯示其內容的圖。在主視圖中,我通過傳遞新創建的文章創建文章視圖的實例:
v = new App.Views.ArticleView({ model: new App.Models.Article() })
並將其呈現給頁面。
在文章視圖和用戶交互的一些標籤是由下面的代碼添加到標籤陣列:
addTag: ->
tags = @model.get('tags')
tags.push({id: '', name: 'foo'})
tags.push({id: '', name: 'bar'})
到目前爲止好!然後關閉文章視圖並渲染另一個視圖。後來我想再次渲染文章視圖,所以代碼:
v = new App.Views.ArticleView({ model: new App.Models.Article() })
再次運行。
的問題是在渲染之後,我仍然可以看到標籤陣列中的先前輸入的標籤,即如果裏面的文章來看,我寫:
console.log(@model.get('tags'))
它將輸出兩個對象前加入。我希望每個實例在創建時都有其默認值,而不是沒有更多引用它的地方。有任何想法嗎?任何與Coffescript有關的問題?
P.S.我希望問題陳述足夠清楚:)
甚至在我關閉文章視圖之前,我調用** @ remove **將其刪除並調用** @ model.clear()。set(@ model.defaults)**,仍然是同樣的問題。 –
coffeescript會生成** Article.prototype.defaults = **,它將默認值附加到Article對象的原型。也許問題出在那個地步?! –
不錯的問題,爲什麼coffeescript編譯這樣的東西?!這也會導致任何屬性甚至非數組/對象屬性的問題。 –