2017-02-03 3 views
0

Ich habe dieses Stück CodeTrigger-Änderung programmatisch: AngularJS

<select id="headers" ng-model="importHeader.systemHeaders"> 
<option ng-repeat="requiredHeaders in vCtrl.wizard.costs.headerData.headers" value="{{requiredHeaders}}" ng-selected="vCtrl.wizard.costs.changed(importHeader.headerName,requiredHeaders.displayName)">{{requiredHeaders.displayName}} 
</option> 
</select> 

Alles, was ich tue, ist durch eine Reihe von Kopf- und prüft Looping, wenn der Wert des importierten Header ist das gleiche, was bei Bedarf und es wählt es automatisch aus. Es funktioniert gut, aber mein Problem ist, dass es nicht die systemHeaders in meinem importHeaders Objekt auf dem ich brauche einen Weg ng-model

erklärt wird fügen Sie das Änderungsereignis dieses select auszulösen. Ich weiß, dass beim programmgesteuerten Ändern der Auswahl das Ereignis ngChange nicht ausgelöst wird.

Ich habe versucht, eine Funktion zu erstellen:

changed: function(val1,val2){ 
     if (val1 == val2){ 
      angular.element('#headers').change(); 
       return true; 
     } else { 
      return false; 
     } 

} 

aber es wird mir ein $ gilt bereits im Gang Fehler.

Vielen Dank im Voraus.

+0

Sie diese Funktion mit '$ scope' zugewiesen hat? –

+0

Nein, ich verwende 'vm' beim Erstellen von Funktionen nicht' $ scope' – Yaje

+0

Bitte geben Sie Ihren vollständigen Code an –

Antwort

0

prüft diese Bedingung vor dem Zeilenkopf ändern

if($scope.$$phase) 
{ 
angular.element('#headers').change(); 
} 

Und diese Diskussionen lesen: What is $$phase in AngularJS?

+0

gibt mir einen nie endenden Fehler auf der Konsole, die hauptsächlich sagt 'Digest bereits in Bearbeitung ' – Yaje

+0

oops. Entfernen Sie einfach die Zeile '$ scope. $ Apply(); ' –