1

Ich stieß auf ein merkwürdiges Verhalten mit einer Winkelanweisung mit einem isolierten Bereich. Offenbar wird die Vorlage mit dem alten Bereich (auch wenn sie in die Liste aufgenommen wurde) aufgelöst, nicht mit dem neuen.Ist es möglich, eckige Anweisungsvorlagen mit isoliertem Bereich zu rendern?

Das klingt ein wenig seltsam, da sie die 'Isolation' des Anwendungsbereichs der Richtlinie verletzt

Die html:

<div ng-app="myApp"> 
    <div ng-controller="MyController"> 
    out prop = {{prop}} 
    <div my-directive prop="'valueIN'"> 
     in prop = {{prop}} 
    </div> 
    </div> 
</div> 

Die js

function MyController($scope) { 
    $scope.prop = 'valueOUT'; 
} 

angular.module('myApp',[]).directive('myDirective', function() { 
    return { 
    scope: { prop: '=' } 
    }; 
}); 

Diese Ausgänge:

Angular 1,1

out prop = valueOUT 
in prop = valueIN 

Angular 1,2

out prop = valueOUT 
in prop = valueOUT 

, die mir seltsam klingt ... bekam auch das gleiche Verhalten mit der Vorlage-Einbindung.

Ist es möglich, das 1.1-Verhalten in 1.2 zu erhalten?

Entsprechende Geige: https://jsfiddle.net/4s1fxjmq/

Antwort

1

Ein Weg ist Element in der richtigen Rahmen neu zu kompilieren:

.directive('myDirective', ['$compile', function($compile) { 
    return { 
    scope: { 
     prop: '=' 
    }, 
    link: function(scope, element, attr) { 
     attr.$set('myDirective', null) 
     $compile(element)(scope) 
    } 
    } 
}]) 
+0

Das funktioniert aber wie wollen Sie tun, wenn Sie Code in Ihrem Link zu initialisieren Ihren Umfang haben (dh einige tun berechnen, was in Ihrer Vorlage angezeigt werden soll)? – sknat

+0

Ich werde mich damit abfinden (habe es am Ende ohne isoliertes Ziel gemacht, um den Hacky-Re-Wrap zu vermeiden). Dieses Verhalten ist mir immer noch seltsam ... – sknat

Verwandte Themen