Directiva personalizada con templateUrl y ng-repeat

He estado repasando este problema durante horas, y finalmente lo reproduje en plunker .

Aquí está mi problema:

Cuando una directiva personalizada que usa recursos externos como plantilla se combina con ng-repeat, la vista no se representó correctamente mientras el modelo cambió.

En mi ejemplo, hacer clic en el enlace reemplazará el modelo, pero los datos antiguos no se han limpiado.

Y si template: 'stringTemplate' lugar de templateUrl: 'urlToTemplate' , simplemente funciona bien. Todavía no tengo idea si es un error o algo así …

Código parcial:

 angular.module('test', []) .run(function($rootScope) { $rootScope.topics = [{ content: 'Click here to change reply', replys: [{ content: 'Reply test...', }] }]; }) .directive('topic', function() { return { replace: true, restrict: 'E', templateUrl: 'topic.htm', link: function(scope) { scope.reply = function(input) { scope.topic.replys = [{ content: '"Reply test..." should be replaced, but it\'s not!' }]; } } }; }) .directive('reply', function() { return { replace: true, restrict: 'E', // template: '
' //this works fine templateUrl: 'reply.htm' // same content }; });

Hice una investigación y parece que no estás solo en este tema:

https://github.com/angular/angular.js/issues/2151

El usuario ishw menciona, como una solución rápida:

“Para aquellos que aún no se hayan dado cuenta: es porque su repetición de ng está en el elemento raíz de la plantilla de su directiva. Envuelva su repetición de ng en cualquier elemento y estará bien”.

Intenté esto con tu plunkr y parece estar funcionando :

  
    Intereting Posts