In meiner App habe ich eine $http.get()
Anfrage, die Daten in das Array $scope.requirements
und einen booleschen in $scope.requirementsFulfilled
speichert.
Ich habe eine Direktive mit dem gleichen Controller wie die Seite. Beide machen eine ng-Wiederholung auf der $scope.requirements
. Wenn das Erforderliche Attribut erfüllt ist, wird nur die Version der Direktive angezeigt, wenn nur die umgebende Seite wahr ist.
Das Problem ist, wenn ich nach dem ersten Mal $http.get()
envoke die Ergebnisse nur in der Direktive-Version gespeichert werden. Wie stelle ich sicher, dass diese Informationen an beide gebunden sind?
Im Controller ...
$scope.requirementsFulfilled;
$scope.requirements = [];
$scope.getRequirements = function(url) {
$http.get(url)
.then(function(res){
$scope.requirements = res.data.requirements;
$scope.setFulfilled(res.data.fulfilled);
});
};
$scope.submitRequirementScan = function() {
if ($scope.checkRequirement()) {
$scope.getRequirements('tempjson/requiredPartsFulfilled.json');
}
};
$scope.setFulfilled = function(inputFulfilled) {
$scope.requirementsFulfilled = inputFulfilled;
};
$scope.getRequirements('tempjson/requiredParts.json');
Die Seite bekommt die Anforderungen und füllt die Seite. Dann führt der Benutzer Aktionen aus, die checkRequirement()
auslöst und dann den neuen JSON abruft, falls er wahr ist. Ab diesem Zeitpunkt wird nur die Direktive aktualisiert.
Ich glaube, dass ein Kind Bereich für die Richtlinie erstellt wird, aber ich bin mir nicht sicher, was genau passiert. Hier ist die Gesamtheit der Richtlinie Info.
Was ist damit los?
bearbeiten - HTML für die Richtlinie
<div class="col-md-6 col-md-offset-3">
<h5>Scan Requirements</h5>
<form ng-submit="submitRequirementScan()" ng-controller="operationCtrl">
<label> <div class="glyphicon glyphicon-barcode ng-hide" ng-hide="requirement.scanned"></div>
<input type="text" ng-model="text" name="text" placeholder="Scan Barcode" autofocus /></label>
<input type="submit" id="submit" value="Submit Scan" class="btn" />
<table class="table table-hover">
<tr ng-repeat="requirement in requirements | filter : unScannedFilter">
<td>{{$index + 1 }}</td>
<td>
<div class="glyphicon glyphicon-barcode ng-hide" ng-hide="requirement.scanned"></div>
<div class="glyphicon glyphicon-check ng-show" ng-show="requirement.scanned"></div>{{requirement.scanned}}
<div class="col-md-4">
<input type="checkbox" ng-model="requirement.scanned">
</div>
</td>
<td>{{requirement.partId}} - {{requirement.partDescription}}</td>
</tr>
</table>
</form>
</div>
bearbeiten 2 - HTML, die die Richtlinie operations Anforderungen und die Seite mit der ng-Show versteckt Anzeige der Anforderungen aufruft.
<div class="row" ng-hide="requirementsFulfilled" >
<operation-Requirements></operation-Requirements>
</div>
<div class="col-md-12" ng-show="requirementsFulfilled">
<table class="table table-hover">
<tr ng-repeat="requirement in requirements">
<td>{{$index + 1 }}</td>
<td>
<div class="glyphicon glyphicon-barcode ng-hide" ng-hide="requirement.scanned"></div>
<div class="glyphicon glyphicon-check ng-show" ng-show="requirement.scanned"></div>
</td>
<td>{{requirement.partId}} - {{requirement.partDescription}}</td>
</tr>
</table>
</div>
Wie sieht Ihre HTML aussehen? – Stephen
Ich habe den HTML-Code sowohl für die enthaltende Seite als auch für die Direktive hinzugefügt. – Todd
Wo ist html für die Direktive auf der Seite? –
Hoyen