2016-07-15 7 views
2

ich die Anweisung mehrmals wieAngular mehrere Instanzen derselben Richtlinie wird Anwendungsbereich nicht isoliert, gleicher Umfang

auf der Seite bin mit
$scope.stylusright[0] = 330; 

var appendHtml = $compile('<directive-history rightstylus="{{stylusright[0]}}"></directive-history>')($scope); 

$element.append(appendHtml); 

$scope.stylusright[1] = 660; 

var appendHtml = $compile('<directive-history rightstylus="{{stylusright[1]}}"></directive-history>')($scope); 

$element.append(appendHtml); 

Meine Richtlinie sieht aus wie

angular.module('mymodule').directive('directiveHistory', function ($compile) 
{ 
return { 
restrict: 'E', 
scope: true, 
transclude: true, 
templateUrl: 'directive.history.html', 
scope: { 
rightstylus: "@", 
}, 
... 

Mein Problem ist, Wenn die selbe Direktive mehrmals derselben Seite hinzugefügt wird, wird ihr Bereich gleich. wenn ich $ scope.stylusright [1] in der 2. Direktive ändere, ändert es auch alle anderen Direktiven.

+0

hilft, dass das Verhalten ist. Wenn Sie dies nicht ändern möchten, kopieren Sie einfach den Wert, auf den Sie verweisen möchten. angular.copy ($ scope.stylusright [1]), sonst machen Sie einen Verweis und es spielt keine Rolle, ob Ihre Direktive den Gültigkeitsbereich jedes Mal isoliert, wenn Sie den Wert von $ scope.stylusright [1] ändern. –

Antwort

0

Ihr Anweisungscode sieht nicht falsch aus (nur Sie haben einen doppelten Gültigkeitsbereichschlüssel).

einen Blick auf diesem Plunker nehmen, ist etwas ähnliches, was man mit Isolat Umfang Richtlinien tun will plunker

es Hoffnung