Jestem początkującym Angular i nie mogę wymyślić, jak pobrać dane spoza dyrektywy. Mam różne dane, które są aktualizowane i potrzebuję dyrektywy, by wziąć te dane i pracować z nimi. Na przykład w poniższym kodzie pierwsze pole wejściowe jest podłączone do dyrektywy i działa poprawnie, ale bez umieszczenia atrybutu dyrektywy na drugim polu wejściowym, w jaki sposób dane wpisane w tym polu mogą zostać zaktualizowane w dyrektywie?AngularJS - Wprowadzono zmianę wartości poza dyrektywą w dyrektywie
HTML:
<div ng-app="myDirective">
<input type="text" ng-model="test1" my-directive>
<input type="text" ng-model="test2">
</div>
dyrektywa:
angular.module('myDirective', [])
.directive('myDirective', function() {
return {
restrict: 'A',
link: function (scope, element, attrs) {
scope.$watch(attrs.ngModel, function (v) {
console.log('New Value from field 1: ' + v);
//console.log('New Value from field 2: ' + ???);
});
}
};
});
Oh whoa, nie spodziewałem się, że będzie działać. Jednak dyrektywa zauważa tylko zmianę w pierwszym polu tekstowym. W jaki sposób drugie pole tekstowe może wywołać funkcję $ watch? – AaronAAA
Wystarczy dodać kolejny zegarek do 'test2'. Zaktualizowałem skrzypce, żeby to pokazać. – sh0ber
Rozumiem. Właśnie zaktualizowałem swój kod i działa! Jeszcze jedno ostatnie pytanie, jeśli istnieją więcej niż dwa dane wejściowe, powiedzmy test3, jak by to działało? – AaronAAA