2014-01-31 62 views
0

我目前正從我的服務器JSON響應如下之前:修改骨幹AJAX響應,他們打的模型

{ 
    "id" : 1, 
    "number" : "123456", 
    "name" : "Some Name", 
    "client" { 
     "com.test.domain.Client" : 5 
    } 
} 

我需要的反應,這樣寫的:

{ 
    "id" : 1, 
    "number" : "123456", 
    "name" : "Some Name", 
    "client" { 
     "id" : 5 
    } 
} 

我想勾選Backbone所做的所有AJAX響應,並將^com.test.domain.*$id匹配的密鑰替換。有誰知道我該怎麼做?

回答

1

您可以通過覆蓋接收此響應的模型中的分析方法來實現此目的。

如:

var SampleModel = Backbone.Model.extend({ 

.... 

parse: function(serverResponse){ 
    var serverResponseString = JSON.stringify(serverResponse); 
    var modifiedResponseString = serverResponseString.replace("com.test.domain.Client","id"); 

    return JSON.parse(modifiedResponseString); 

}, 

.... 

}); 

當你獲取或從模型的實例保存,他們會通過這個parse方法。所以你可以修改它以返回你想要的值。

+0

+1,我將使用這種技術,但使用正則表達式並在Backbone.Model.prototype.parse – jax