2013-01-18 139 views
3

我想更改Breeze的序列化程序,以便我的javascript對象是camelCased。在文件中說它可以完成但說它是被解釋的。你如何強制Breeze元數據生成屬性爲camelCase?

您可以更改格式的配置[加以解釋]但如果 你這樣做,你有責任確保你的改變並沒有 與微風的預期衝突。

有沒有人知道如何做到這一點?

+0

它仍有待解釋,但您不會......並且不應該爲此特定目的更改格式化程序的配置......或以任何與Breeze客戶端期望相沖突的方式進行更改。請參閱下面的答案,瞭解您尋求的替代方案 – Ward

回答

3

簡單的是你的第一個查詢之前,只需撥打

breeze.NamingConvention.camelCase.setAsDefault(); 

(或創建第一個元數據儲存器之前)。

有更多的信息hereherehere

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(); 
+0

我使用此設置。儘管我個人更喜歡這是默認設置,但我可以設置它。 –

+2

我也使用它。 :) ...但是對於微風產品來說,理由是要符合'最少驚喜原則',因此,默認情況下,服務器上的屬性名稱與客戶端上的屬性名稱相匹配。 –

+2

請閱讀文檔[「NamingConvention」部分](http://www.breezejs.com/documentation/metadata#NamingConvention)中的全部內容。 – Ward

相關問題