6

Meine Richtlinie VerwendungscodeWie implementiert man ng-change für eine benutzerdefinierte Anweisung für die Auswahlliste?

 <input-select ng-model="someModel" ng-change="someFunction()" 
    options="countries"></input-select> 

Meine Richtlinie Code

.directive('inputSelect', function() { 
    return { 
     templateUrl: 'someTemplate.html', 
     restrict: 'E', 
     scope: { 
      ngModel: '=', 
      ngChange: '=' 
     } 
    }; 
}); 

Meine Richtlinie Vorlage

<select 
      ng-model="ngModel" ng-init="ngModel " 
      ng-options="option[optionId] as option[optionName] for option in options" 
      ng-change="ngChange"> 
    </select> 

Also, wenn das ausgewählte Element geändert wird, für unendlich genannt die Funktion someFunction() wird immer Zeiten (obwohl die Änderung einmal durchgeführt wird), was geändert werden sollte, um sicherzustellen, dass someFunction() nur aufgerufen wird y einmal (someFunction() eine Funktion im Rahmen des Controllers ist, in dem die Richtlinie verwendet wird)

[Ich versuche, hätte & und @ für die Geltungsbereich Art von ngChange verwenden, wird somefunction() nicht, wenn mit denen gefeuert werden. ]

Antwort

5

sollten Sie & verwenden, welche für die Expression verwendet wird und von Markup könnten Sie diese Methode, wie ngChange() statt ngChange nur

Markup

<select 
     ng-model="ngModel" ng-change="ngChange()" 
     ng-options="option[optionId] as option[optionName] for option in options"> 
    </select> 

-Code

scope: { 
    ngModel: '=', 
    ngChange: '&' 
} 
nennen

Example Plunkr

+0

'&' oder '@' funktioniert nicht - 'someFunction()' wird nicht ausgeführt, wenn es verwendet wird. –

+0

@VishwajeetVatharkar versuchen Sie die Art und Weise schlug ich vor ... ändern Sie Ihren Code, wie ich dekretiert..bis dann ich eine plunkr für Sie erstellen –

+0

machen es 'ngChange()' in der Vorlage funktioniert nicht. –

Verwandte Themen