これについていくつかの投稿がありますが、私のプロジェクトで機能する特定のものはありません。
エンティティの拡張に関する 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 も使用しています。
アップデート:
Ok。それで、部分的に機能するものを見つけました。デフォルト値がビューに表示されるようになりました。ただし、JSON からの値は入力されていません。常にデフォルト値が使用されます。
これは私が今持っているものです:
var Merchant = function () {
this.MyProp = "5";
};
store.registerEntityTypeCtor("Merchant", Merchant);
MyProp が JSON からの実際の値で埋められるようにするには、何が必要ですか?