[英]How to extend Breeze MetaData for Unmapped Entity Property without KO
有一些關於此的帖子,但是沒有什么適合我的項目。
我閱讀了Breeze上有關擴展實體的文檔,但是它們使用了剔除法,而我使用的是Angular。
我在服務器上定義了一個自定義屬性,並且該屬性正在我的JSON中傳遞。
但是,Breeze js忽略了它,因為沒有元數據。
我需要在客戶端上定義元數據,以便Breeze可以讀取屬性。
到目前為止,這是我擁有的客戶端,但是它不起作用。 不工作...是指我用{{item.MyProp}}調用時,屏幕上什么都沒有顯示。 但是,實際元數據中的所有其他屬性顯示都很好。
configureBreeze();
var serviceName = 'api/Entity';
var manager = new breeze.EntityManager(serviceName);
manager.enableSaveQueuing(true);
var store = manager.metadataStore;
addMyPropType(store);
function addMyPropType(store) {
store.registerEntityTypeCtor("Merchant", MyProp);
}
// custom Merchant constructor
var MyProp= function () {
//'MyProp' is a server-side calculated property of the Merchant class
// This unmapped property will be empty for new entities
// but will be set for existing entities during query materialization
this.MyProp= "test";
};
var dataservice = {
store: store,
List: List,
Create: Create,
ListDetail: ListDetail,
Save: Save
};
return dataservice;
我已經准備好了NODB示例,但是我有一個DB,它也使用KO。
更新:
好。 因此,我發現了部分可行的方法。 現在默認值顯示在視圖上。 但是,不會填充JSON中的值。它始終使用默認值。
這就是我現在所擁有的:
var Merchant = function () {
this.MyProp = "5";
};
store.registerEntityTypeCtor("Merchant", Merchant);
MyProp如何被JSON的實際值填充,該怎么辦?
如果不是如PWKad建議的那樣使用camelCasing,請在http://www.breezejs.com/samples/breezeangular-template上查看Breeze Angular SPA模板的微風文檔。 該鏈接中有一個部分稱為“客戶端上的擴展實體定義”。
如果我理解正確,那么您就有一個帶有“ MyProp”計算屬性的“商人”對象。 嘗試這個
store.registerEntityTypeCtor("Merchant",Merchant, merchantInitializer);
function Merchant(){
this.MyProp="";
}
好吧,這似乎是Breeze中的錯誤。 實際上,您必須編輯breeze.js文件才能使其正常工作。 我從未想過這是一個錯誤。
我在這里找到了答案:
更新:
今天,我更新到了最新版本的breeze.js,並且該錯誤不再存在。 因此,這基本上是無緣無故的痛苦。 謝謝大家的幫助。 如果由於某些原因您無法更新,請使用上面的鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.