2015-03-16 4 views
6

Geige hier http://jsfiddle.net/prantikv/dJty6/36/Fehler: Ausdruck ‚undefined‘ mit der Richtlinie verwendet werden, sind nicht übertragbar

Ich habe Daten von json wie so

$scope.info={ 
"company1":"this", 
"company2":"is", 
    "company3":"sparta" 
} 

ich ng-repeat bin mit allen Daten zu drucken, und ich möchte monotor für Änderungen auf den Feldern.

<input type="text" ng-repeat="item in info" value="{{item}}" monitor-change> 

Ich habe eine monitorChange Richtlinie wie folgt aus:

.directive('monitorChange', function() { 
    return { 
    restrict: 'A', 
    scope: {changedFlag: '='}, 
    link: function(scope, element, attrs) { 
     var $el = angular.element(element); 
     $el.on('keyup', function() {//bind to element 
      scope.$apply(function() { 
      scope.changedFlag =true;//on key press value is changed 
      }); 
     }); 
    } 
    }; 
}); 

Beim Versuch, die Daten zu ändern, erhalte ich die Fehler Error: [$compile:nonassign] Expression 'undefined' used with directive 'monitorChange' is non-assignable!

Ich drucke die Daten aus meiner Sicht mit:

{{changedFlag }} 

Was ist mit dem Code falsch?

+0

Sie sollten die tatsächliche Fehlermeldung, die Sie erhalten, posten. Ich werde die Frage mit dem vollständigen Fehler für Sie aktualisieren. – Claies

+2

'scope: {changedFlag: '='},' aber Sie deklarieren im HTML kein 'changed-flag' Attribut. –

Antwort

9
  1. Wie Sie scope: {caretPosition: '='} in Richtlinie Definition erwähnt, müssen wir caret-position="obj.changedFlag" im Markup zu übergeben.
  2. Da ng-repeat einen neuen Bereich für jedes Element erstellt, empfiehlt es sich, die Punktnotation zu verwenden, damit die Änderungen im Bereich des Controllers angezeigt werden.

Hier ist die aktualisierte Geige. http://jsfiddle.net/dJty6/38/

+1

auch beachten Sie, dies könnte ein falsches positives sein; Es gibt derzeit keine Möglichkeit, diesen Wert zurück in 'false' zu ​​ändern. Sobald sich der Wert auf "wahr" ändert, bleibt er "wahr", selbst wenn alle vom Benutzer vorgenommenen Änderungen rückgängig gemacht werden. – Claies

Verwandte Themen