- Ich benutze eine Direktive zweimal in der gleichen Ansicht.
- In jeder Anweisung rufe ich eine Vorlage mit einem Feld und einer UL-Liste.
- Wenn der Benutzer etwas schreibt, rufe ich API, die mir eine Array von Ergebnissen zurückgibt.
- Dieses Array wird für die Anzeige einer Liste über ng-repeat (ul) verwendet.
Das Problem: Wenn ein Benutzer etwas auf das Gebiet zu schreiben, die erste (erste Richtlinie) geladen wird, die ng-Wiederholung, die in der zweiten Richtlinie genannt wird, ist.ngModel Referenz in der Richtlinie aufgerufen mehrere Zeit von Sicht
<div style="padding: 20px;">
<p>First directive :</p>
<span search-box ng-model="toto"></span>
<hr>
<p>Second directive :</p>
<span search-box ng-model="titi"></span>
</div>
myApp.directive('searchBox', [function() {
return {
restrict: 'A',
scope: {
model: '=ngModel',
},
template: ''
+'<div>'
+ '<input type="text" ng-model="model" />'
+ '<ul style="background-color:#e1e1e1; width: 142px; padding: 15px;" ng-show="cities.length">'
+' <li ng-repeat="city in cities">'
+' {{city.label}}'
+' </li>'
+ '</ul>'
+'</div>',
replace: true,
transclude: true,
link: function(scope, element, attrs, ngModel) {
scope.cities = [];
scope.$watch('model', function (newValue, oldValue) { if(newValue != oldValue && newValue.length > 0) search(newValue) });
search = function(input) {
scope.cities = [
{label: 'Paris'},
{label: 'London'},
{label: 'New York'},
{label: 'Berlin'},
{label: 'Lisbonne'}
];
};
}
}
Bitte, etwas in dem ersten Feld schreibt, wird das Ergebnis Feld unter dem zweiten Feld angezeigt. Warum bezieht sich die ul nicht auf ihre eigene Richtlinie?
Wie ich es verstehe, danke der für den Tipp! :) –