0

これについていくつかの投稿がありますが、私のプロジェクトで機能する特定のものはありません。

エンティティの拡張に関する 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 からの実際の値で埋められるようにするには、何が必要ですか?

4

2 に答える 2

0

PWKad が提案したように camelCasing があなたのケースではない場合は、ここで Breeze Angular SPA テンプレートのブリーズのドキュメントを確認してください http://www.breezejs.com/samples/breezeangular-template。そのリンクには、「クライアントでのエンティティ定義の拡張」というセクションがあります。

私の理解が正しければ、「MyProp」計算プロパティを持つ「Merchant」オブジェクトがあります。これを試して

store.registerEntityTypeCtor("Merchant",Merchant, merchantInitializer);

function Merchant(){
 this.MyProp="";
}
于 2013-09-22T12:25:46.860 に答える
0

これは Breeze のバグのようです。これを機能させるには、実際にbreast.jsファイルを編集する必要があります。バグだとは思いもしませんでした。

ここで答えを見つけました:

Breeze 拡張エンティティ プロパティは 2 番目のクエリでのみ読み込まれます

アップデート:

今日、breeze.js の最新バージョンに更新したところ、バグはなくなりました。したがって、これは基本的に、理由もなく非常に苦痛でした。助けてくれてありがとう。何らかの理由で更新できない場合は、上記のリンクを使用してください。

于 2013-09-22T22:22:17.003 に答える