1

私は困惑しているので、誰かがブリーズの拡張エンティティについてより良い洞察を持っていることを願っています! そこで、サーバー側(BreezeのAPIを利用したWeb API)に部分クラス(WO_Rout)を作成し、「AssetJobEqNo」という名前のプロパティを作成しました。

Breezeのドキュメントhereを読み、従いましたが、役に立ちませんでした。ガイドに従って、この特定のエンティティ「WO_Rout」のコンストラクターを次のように作成しました。

var assets = function () {
    this.AssetJobEqNo = '';
};
var serviceName = 'cms8/workorders';
var manager = new breeze.EntityManager({
    serviceName: serviceName
});
var store = manager.metadataStore;
store.registerEntityTypeCtor('WO_Rout', assets);

コントローラーにクエリを実行すると、この特定のプロパティ「AssetJobEqNo」が送信され、クライアント側の JSON 生の結果に表示されます。

だから....ここに私が理解できない奇妙な部分があります。UI のボタンに関連付けられたクエリを実行すると、プロパティが読み込まれ、割り当てたオブジェクトに割り当てられますが、それでも空の文字列の既定値であり、読み込まれません。次に、まったく同じクエリを再度実行して、同じエンティティを取得しましたが、今回は値がそこにあります。

結論として、この拡張エンティティのプロパティが最初のクエリで埋められない理由について混乱していますが、まったく同じクエリを実行すると、2 回目にロードされますか?

これがすべて理にかなっていることを願っています。

dataService 関数:

function getWorkOrder(reqNo) {
    if (reqNo > 0) {
        var query = breeze.EntityQuery.from("GetWorkOrders");
        query = query.where("req_no", "==", reqNo)
            .expand(["WO_RtHelp.WO_Rout", "WO_RtHelp.WO_Rout.eqptmast", "WO_RtHelp.WO_Act.WO_Resources.persmast", "WO_RtHelp.WO_Act.WO_Resources.Kits", "WO_RtHelp.WO_Act.Activity", "WO_RtHelp.WO_Act.WO_Resources.customer", "WO_RtHelp.WO_Act.WO_Resources.eqptmast", "WO_RtHelp.WO_Act.WO_Resources.invsite.invmast", "WO_RtHelp.WO_Act.WO_Resources.crew"])
        return manager.executeQuery(query);
    } else {
        return throwNotification('Please enter a Work Order number.');
    }
}

成功したクエリのコントローラー関数

function querySucceeded(data) {

    $scope.WorkOrder = {};

    if (data.results.length === 0) {
        sysErrorNotification('No Work Order with System #' + $scope.workOrderSearchNumber);
    }
    else {
        $scope.WorkOrder = data.results[0];
        $scope.myData = $scope.WorkOrder.WO_RtHelp;
        $('#bottomNav a[href="/WorkOrders/#woMain"]').tab('show');
        resetDataSources();
        $scope.$apply();
    }
}

Breeze、Angular、Q、および jQuery を使用しています

4

2 に答える 2

0

以下の質問でウォードの回答を確認してください。マップされていないプロパティに関するガイダンスが得られるはずです。

Angular/Breeze SPA テンプレートの UnMapped プロパティ

expand() を解体したものを見逃していない限り、正直に言うと、それがどのように機能しているのかわかりません

query = query.where("req_no", "==", reqNo)
        .expand(["WO_RtHelp.WO_Rout", "WO_RtHelp.WO_Rout.eqptmast", "WO_RtHelp.WO_Act.WO_Resources.persmast", "WO_RtHelp.WO_Act.WO_Resources.Kits", "WO_RtHelp.WO_Act.Activity", "WO_RtHelp.WO_Act.WO_Resources.customer", "WO_RtHelp.WO_Act.WO_Resources.eqptmast", "WO_RtHelp.WO_Act.WO_Resources.invsite.invmast", "WO_RtHelp.WO_Act.WO_Resources.crew"])

その中で値が区切られた文字列でなければなりません -

 query = query.where("req_no", "==", reqNo)
        .expand("WO_RtHelp.WO_Rout", "WO_RtHelp.WO_Rout.eqptmast, WO_RtHelp.WO_Act.WO_Resources.persmast, WO_RtHelp.WO_Act.WO_Resources.Kits, WO_RtHelp.WO_Act.Activity, WO_RtHelp.WO_Act.WO_Resources.customer, WO_RtHelp.WO_Act.WO_Resources.eqptmast, WO_RtHelp.WO_Act.WO_Resources.invsite.invmast, WO_RtHelp.WO_Act.WO_Resources.crew")

文字列の配列を渡さなかったことに注意してください。値をコンマで区切った文字列を渡しました。

于 2013-09-19T17:20:38.107 に答える