Domanda

Quando generato tag di input con NG-Repeat e assegna il modello NG all'interno della direttiva personalizzata Invoca la direttiva su ogni colpo chiave.

Questa è la demo

http://plnkr.co/edit/oku8eh?p=preview .

var app = angular.module('myApp', []);
app.controller('MyCtrl', function($scope) {
  $scope.arr = ["1234567"];
});

app.directive('myDirective', function($compile, $timeout) {
  var num=0;
  return {
    link: function(scope, el, attrs) {
      console.log('this happens with every keyup event in textarea when ng-model is given as arr[$index], why?');
    }
  };
});


<body ng-app="myApp" ng-controller="MyCtrl">
  arr[0] : {{arr[0]}} <br/>
  <input my-directive ng-repeat="str in arr" ng-model="arr[$index]" />
  </input>
</body>
.

è strano.

È stato utile?

Soluzione

È perché il ng-repeat si sta rivaluta ogni volta che si modifica l'array di arr in quanto deve guardarlo (vedi linea L256 qui in ngrepeat fonti su github)

Se si segnala il modello su un altro array, tutto è ok.

Puoi verificarlo con questo plunkr .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top