對我來說似乎有點奇怪,你的服務器發送的東西不會回覆。我看到兩個選項:
- 在控制器中過濾掉傳入的
name_backwards
。
- 停止發送
name_backwards
並讓客戶處理它。
很容易,從params
適當部分只是刪除:name_backwards
。
有一點涉及。首先你會停止將name_backwards
添加到JSON中。然後,你可以在添加name_backwards
模型的parse
:
parse: function(response) {
response.name_backwards = reverse(response.name);
return response;
}
一個可靠的方法來扭轉在JavaScript字符串見this answer。
那麼你要忽略name_backwards
模型的toJSON
:
toJSON: function() {
var o = _(this.attributes).clone(); // This is what the standard toJSON does.
delete o.name_backwards;
return o;
}
然後添加一個serialize
方法,當你餵養你的模型,你的模板,而不是使用toJSON
:
serialize: function() {
return _(this.attributes).clone();
}
如果您想要在模型和模板之間建立一致的界面,您可以輕鬆地將serialize
修補爲Backbone.Model.prototype
。
未包含在重寫的toJSON中的任何字段似乎都不可用於其他用途。我需要用於顯示目的的計算值,我只是不想在更新中將它們發送回服務器。 – ben
是的,正如@mu指出的那樣,主幹沒有提供獨特的方法,意思是「toJSON for templating」和「toJSON for the API」。您可能需要考慮演示者設計模式,並將模型專注於處理規範數據。但是,骨幹問題經常出現,答案歸結爲「是的,你可以做到這一點,但你必須寫一堆代碼」。 –