Dies ist ein Quiz für viele, aber ich habe nie zuvor mit Winkel gearbeitet und ich brauche Hilfe, um eine einfache Aufgabe zu erreichen, weil ich stecken bleiben.Angular Controller Load()
Mein ng-Controller processctrl hat eine load()
Methode deklariert. Meine Ansicht hat zwei Aufrufe an ng-controller="processoctrl"
, was dazu führt, dass die Methode load()
zweimal ausgeführt wird. processctrl hat auch eine Eigenschaft currentPhase, die null startet und load()
seinen Wert festlegen. Ich könnte einfach ($scope.currentPhase || load())
schreiben, um doppelte load()
zu verhindern, aber die Bindung an currentPhase tritt über (in DOM) des Repeaters auf.
Ich könnte eine Objekteigenschaft in das $ rootScope legen und es von processoctrl.scope.load() aktualisieren, aber es würde in einen Wahnsinn verwandeln.
Ich könnte einfach $ ($ (". HeaderCurrentPhase") [0]) .html ($ scope.currentPhase) in meine load() -Methode, aber es ist auch Wahnsinn.
Ich konnte umschreiben load()
zu getProcesses = function(){}
und $rootScope.$emit('getProcesses',{})
an anderer Stelle und in den Controller $rootScope.$on('getProcesses',getProcesses)
diese doppelte load()
zu verhindern, aber ich denke, das redundate ist, so wie eine Controller-Funktion statt Last zu rufen Sie einfach an()? Oder wie erreicht man diese einfache Aufgabe? Benutze eine Direktive?
Ansicht:
<div ng-include src="'includes/overview-header.html'"></div>
<div ng-include src="'includes/process-info.html'"></div>
Ausschnitt aus umfasst/Übersicht-header.html:
<div class="col-md-12">
....
<h4><strong>currentPhase</strong></h4>
<p ng-controller="processoctrl">
<span class="label label-primary headerCurrentPhase" ng-bind="currentPhase"></span>
</p>
</div>
Ausschnitt aus umfasst/Prozess-info.html:
<tbody ng-controller="processctrl">
<tr ng-repeat="Process in Processes|orderBy:'ID'">
<td>{{Process.isCurrent}}</td>
<td>{{Process.isCurrent}}</td>
<td>{{Process.ID}}</td>
<td>{{Process.Title}}</a></td>
</tr>
</tbody>
processoctrl
(function (app) {
app.controller('processctrl', function ($scope, $rootScope, $routeParams, factorysvc) {
$scope.Processes = [];
$scope.currentPhase = null;
load();
//($scope.currentPhase || load())
function load() {
var promiseGet = factorysvc.getPsby($routeParams.itemId);
promiseGet.then(function (data) {
$scope.Processes = data;
$rootScope.root.empreendimento.currentPhase = $scope.currentPhase = data[0].currentPhase.Title;
}, function (err) {
$scope.Message = "Error " + err.status;
});
}
})}(angular.module('sgaapp')));
Es ist eine Legacy-Entwicklung. Kam zu mir, um Funktionalität hinzuzufügen ... – egidiocs
meine Entschuldigung, Mann –
Ich beschloss, die Dinge zu abstrahieren. Wir haben heute einen baseController und einen Fabrikprototyp, der wie ein Modell funktioniert, enthoben. Morgen werden wir den Dienst abstrahieren (hat viele1-1 Controller-Service die gleichen Endpunkte für ListItems abfragen). Vielen Dank für Ihre Antwort, @Sergey. Denkst du, dass ich eine gute Route route, ich meine, alle Wünsche sind willkommen. – egidiocs