Die erweiterte Entitätseigenschaft Breeze wird nur bei der zweiten Abfrage geladen

Hoffentlich hat jemand einen besseren Einblick in Breeze's Extended Entities, denn ich bin ratlos! Daher habe ich eine Teilklasse (WO_Rout) auf der Serverseite erstellt (Web-API unter Verwendung der Breeze-API) und eine Eigenschaft mit dem Namen "AssetJobEqNo" erstellt.

Ich habe die Dokumentation von Breeze gelesen und befolgtHier ohne Erfolg Im Anschluss an die Anleitung habe ich einen Konstruktor für diese bestimmte Entität "WO_Rout" wie folgt erstellt:

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);

Wenn ich meinen Controller abfrage, wird diese bestimmte Eigenschaft "AssetJobEqNo" gesendet und in den JSON-Raw-Ergebnissen auf der Clientseite angezeigt.

Also ... hier ist der seltsame Teil, den ich nicht herausfinden kann. Wenn ich eine Abfrage durchführe, die an eine Schaltfläche auf meiner Benutzeroberfläche gebunden ist, wird die Eigenschaft geladen und in dem Objekt, das ich zugewiesen habe, ABER es ist immer noch der Standardwert einer leeren Zeichenfolge, sie wird nie geladen. Dann führe ich die EXAKTE gleiche Abfrage erneut aus und greife auf die gleichen Entitäten zurück, und diesmal IST der Wert dort.

Abschließend bin ich verwirrt, warum die Eigenschaft dieser erweiterten Entität bei der ersten Abfrage nicht ausgefüllt wird, aber wenn ich genau dieselbe Abfrage ausführe, wird sie beim zweiten Mal geladen.

Hoffe das alles macht Sinn.

dataService-Funktion:

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.');
    }
}

Controller-Funktion für erfolgreiche Abfragen

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();
    }
}

Ich verwende Breeze, Angular, Q und jQuery

Antworten auf die Frage(2)

Ihre Antwort auf die Frage