簡體   English   中英

如何在沒有KO的情況下為未映射的實體屬性擴展Breeze元數據

[英]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擴展實體屬性僅在第二次查詢時加載

更新:

今天,我更新到了最新版本的breeze.js,並且該錯誤不再存在。 因此,這基本上是無緣無故的痛苦。 謝謝大家的幫助。 如果由於某些原因您無法更新,請使用上面的鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM