我有一个角度指令,我正在应用ng-repeat。该指令的目的是将自己与基于传递给原始指令的值的不同指令交换出来:
<content-type-directive type="item.type" ng-repeat="item in items"></content-type-directive>
变为
<type1-specific-directive></type1-specific-directive>
<type2-specific-directive></type2-specific-directive>
<type1-specific-directive></type1-specific-directive>
<type1-specific-directive></type1-specific-directive>
...
完整示例:http://jsfiddle.net/qPGZ8/6/
如果第二个指令的html可以在第一个指令的包装元素中呈现,那么这将是直截了当的,但在这种情况下我需要它来实际替换原始项目。
这与Customizing the template within a Directive
有关在Misko的回答中,他解释了使用element.replaceWith()来换掉原来的html。当项目不在ng-repeat中时,这种方法很好,但在ng-repeat内部,它会破坏ng-repeat用新元素更新自身的能力。
答案 0 :(得分:1)
它与错误https://github.com/angular/angular.js/issues/2151有关。升级到最新版本1.2.0
将解决此问题。
顺便说一下,按钮应该放在控制器的范围内。希望这是一个错字。
的 Demo 强>