2014-09-16 12 views
7

Ich versuche herauszufinden, wie ich hören kann, wenn das Modell innerhalb einer Direktive aktualisiert wird.Angularjs: Modellwechsel in einer Direktive anhören

eventEditor.directive('myAmount',function(){ 
    return { 
     restrict: 'A', 
     link: function(scope, elem, attrs) { 
      scope.$watch(attr['ngModel'], function (v) { 
      console.log('value changed, new value is: ' + v); 
      }); 
     } 
     } 
    } 
}; 

});

Die Richtlinie wird in ng-Wiederholung als

genannt
<div ng-repeat="ticket in tickets"> 
    <input my-amount ng-model="ticket.price"></input> 
</div> 

Sehr glücklich für jede Hilfe. Ich verstehe nicht, wie das Scope-Attribut innerhalb einer ng-Wiederholung aussieht.

Danke.

Antwort

13

http://jsbin.com/mihupo/1/edit

attrs statt attr

app.directive('myAmount',function(){ 
    return { 
     restrict: 'A', 
     link: function(scope, elem, attrs) { 
      scope.$watch(attrs['ngModel'], function (v) { 
      console.log('value changed, new value is: ' + v); 
      }); 
     } 
     } ; 
    } 
); 
+0

Danke für die Korrektur. Funktioniert super. Vielen Dank! – Niclas

4

Versuchen Sie dies für mich tun

eventEditor.directive('myAmount',function(){ 
    return { 
    restrict: 'A', 
    scope: {model: '=ngModel'}, 
    link: function(scope, elem, attrs) { 
      scope.$watch('model', function (v) { 
      console.log('value changed, new value is: ' + v); 
      }); 
     } 
     } 
    } 
    }; 
}); 
+0

Danke. Works, aber Antwort unten scheint etwas einfacher zu sein, indem Sie attr, ngModel zu hören. – Niclas

+0

Vielen Dank! Du hast mich aus der Ruhe gebracht. – blackwood

-1

folgende Code funktioniert.

app.directive('myAmount',function(){ 
    return { 
     restrict: 'A', 
     link: function(scope, elem, attrs) { 
      attrs.$observe('ngModel', function (v) { 
      console.log('value changed, new value is: ' + v); 
      }); 
     } 
     } ; 
    } 
); 
+3

Beobachten wird nur Beobachter DOM Änderungen, nicht Modelländerungen. – dude

Verwandte Themen