我想更改Breeze的序列化程序,以便我的javascript對象是camelCased。在文件中說它可以完成但說它是被解釋的。你如何強制Breeze元數據生成屬性爲camelCase?
您可以更改格式的配置[加以解釋]但如果 你這樣做,你有責任確保你的改變並沒有 與微風的預期衝突。
有沒有人知道如何做到這一點?
我想更改Breeze的序列化程序,以便我的javascript對象是camelCased。在文件中說它可以完成但說它是被解釋的。你如何強制Breeze元數據生成屬性爲camelCase?
您可以更改格式的配置[加以解釋]但如果 你這樣做,你有責任確保你的改變並沒有 與微風的預期衝突。
有沒有人知道如何做到這一點?
簡單的是你的第一個查詢之前,只需撥打
breeze.NamingConvention.camelCase.setAsDefault();
(或創建第一個元數據儲存器之前)。
在NamingConvention.camelCase是一個非常簡單的實現駱駝外殼的建造,所以你也可以寫你自己的命名規則是這樣的:
var namingConv = new breeze.NamingConvention({
serverPropertyNameToClient: function (serverPropertyName, prop) {
if (prop && prop.isDataProperty && prop.dataType === DataType.Boolean) {
return "is" + serverPropertyName;
} else {
return serverPropertyName.substr(0, 1).toLowerCase() + serverPropertyName.substr(1);
}
},
clientPropertyNameToServer: function (clientPropertyName, prop) {
if (prop && prop.isDataProperty && prop.dataType === DataType.Boolean) {
return clientPropertyName.substr(2);
} else {
return clientPropertyName.substr(0, 1).toUpperCase() + clientPropertyName.substr(1);
}
}
});
namingConv.setAsDefault();
我使用此設置。儘管我個人更喜歡這是默認設置,但我可以設置它。 –
我也使用它。 :) ...但是對於微風產品來說,理由是要符合'最少驚喜原則',因此,默認情況下,服務器上的屬性名稱與客戶端上的屬性名稱相匹配。 –
請閱讀文檔[「NamingConvention」部分](http://www.breezejs.com/documentation/metadata#NamingConvention)中的全部內容。 – Ward
它仍有待解釋,但您不會......並且不應該爲此特定目的更改格式化程序的配置......或以任何與Breeze客戶端期望相沖突的方式進行更改。請參閱下面的答案,瞭解您尋求的替代方案 – Ward