2011-11-22 17 views
1

我有一個骨幹模型的屬性和一些輔助方法輸出的東西,而不是實際的屬性(例如格式)。骨幹toJSON與幫助方法

但是,當我呼叫toJSON時,只返回屬性,所以我的鬍鬚模板無法訪問這些幫助器方法。有什麼辦法可以解決這個問題嗎?或者我應該採取不同的方法?

解決此問題的唯一方法是創建屬性的格式化版本,並在每次屬性更改時更新它?

回答

6

豪爾赫,我會在我自己的方法中擴展toJSON,並將新的json添加到模板中。

像這樣:

var userModel = Backbone.Model.extend({ 
    initialize: function(){ 
     _.bindAll(this, 'fullname', 'toFullJSON'); 
    }, 
    fullname: function(){ 
     return this.get('name') + " " + this.get('lastname'); 
    }, 
    toFullJSON: function(){ 
     var json = this.toJSON(); 
     return _.extend(json, {fullname : this.fullname()}); 
    } 
}); 

var user = new userModel(); 
u.set({name: 'John', lastname: 'Doe'}); 

// you will see in this console log, that the toFullJSON function returns both the toJSON properties, and your added propert(y)(ies)... 
console.log(u.toFullJSON()); 
+0

美麗。謝謝 :) –

0

確保JSON是正確的。如果你正在返回對象,那麼可能會有一些內部的引用(它們在JSON中不受支持,可能會被忽略)。

+0

謝謝!但對不起,你能詳細說明一下嗎? Backbone.js的toJSON方法只返回模型的屬性對象的JSON,但我在模型中有一些函數,我想在返回的JSON中出現,這樣我的鬍鬚模板可以將它用作幫助器。只是想知道是否有一個首選的方式來完成這與backbone.js –