Ich habe eine eckige Vorlage mit einem Formular für Benutzerdaten. Einige Felder wie Name und Adresse nur angezeigt, wenn der Benutzer eine Rechnung benötigt:Angular ng-show spiegelt nicht den Wert der Bedingung
<div class="personal-details" ng-show="showInvoiceFields()">
<!-- input fields here... -->
</div>
Ich habe eine Funktion showInvoiceFields()
im Rahmen, die true zurück, wenn der aktuelle Benutzer über „Rechnung Rolle“ oder wenn das Produkt erfordert eine Rechnung.
$scope['showInvoiceFields'] = function() {
console.log('hasInvoiceRole: ' + $scope['hasInvoiceRole']);
console.log('product:');
console.log($scope['product']);
return $scope['hasInvoiceRole'] || $scope['product'].needsInvoice;
};
Dieser Teil des Formulars ist zunächst verborgen, bis ein Produkt aus einem Dropdown ausgewählt wird. Zunächst las ich dies in der Konsole, da der Benutzer nicht Rechnung Rolle spielt:
hasInvoiceRole: false
product needs invoice:
undefined
undefined
Wenn ich ein Produkt auswählen, die Rechnung erfordert, habe ich gelesen:
hasInvoiceRole: false
product needs invoice:
{... a ver big object..., needsInvoice: true, ...}
jedoch die Felder nicht tun Show. Dies geschieht nur in der Produktion. Vielleicht gibt es etwas Spezifisches über den verfälschten Code, der das Problem verursacht?