AngularJS 1.2.1-动态添加指令错误,除非它们不替换源元素

AngularJS 1.2.1-动态添加指令错误,除非它们不替换源元素,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我已经将我的应用程序升级到AngularJS 1.2.1,并且在以前的工作代码中遇到了一个问题,我无法解决这个问题 我有一个页面,用户从预定义的内容列表中构建内容,每个列表都是一个单独的AngularJS指令。我有一个服务,它存储配置项的数组,并将其链接到ng repeat命令。当用户选择添加一个新项目时,我所做的就是将其推送到数组中,并让Angular来更新UI。我的HTML与此类似 <div data-ng-repeat="item in configuration">

我已经将我的应用程序升级到AngularJS 1.2.1,并且在以前的工作代码中遇到了一个问题,我无法解决这个问题

我有一个页面,用户从预定义的内容列表中构建内容,每个列表都是一个单独的AngularJS指令。我有一个服务,它存储配置项的数组,并将其链接到ng repeat命令。当用户选择添加一个新项目时,我所做的就是将其推送到数组中,并让Angular来更新UI。我的HTML与此类似

<div data-ng-repeat="item in configuration">
    <directive-a data-ng-if="item.obj === 'directive-a'></directive-a>
    <directive-b data-ng-if="item.obj === 'directive-b'></directive-b>
    <directive-c data-ng-if="item.obj === 'directive-c'></directive-c>
    <directive-d data-ng-if="item.obj === 'directive-d'></directive-d>
</div>
当我将它们设置为替换“true”时,在将它们添加到数组中时,控制台中会出现以下错误,并且该项不会呈现:

TypeError: undefined is not a function
    at ngRepeatAction (file:///C:/TeamFoundation/PRE/js/libs/angular-1.2.1.js:18826:15)
    at Object.$watchCollectionAction [as fn] (file:///C:/TeamFoundation/PRE/js/libs/angular-1.2.1.js:11347:11)
    at Scope.$digest (file:///C:/TeamFoundation/PRE/js/libs/angular-1.2.1.js:11443:27)
    at Scope.$apply (file:///C:/TeamFoundation/PRE/js/libs/angular-1.2.1.js:11682:24)
    at HTMLDivElement.<anonymous> (file:///C:/TeamFoundation/PRE/js/libs/angular-1.2.1.js:17531:21)
    at HTMLDivElement.jQuery.event.dispatch (file:///C:/TeamFoundation/PRE/js/libs/jQuery-1.8.2.js:3063:34)
    at HTMLDivElement.elemData.handle.eventHandle (file:///C:/TeamFoundation/PRE/js/libs/jQuery-1.8.2.js:2681:47)
TypeError:未定义不是函数
在下一步行动中(file:///C:/TeamFoundation/PRE/js/libs/angular-1.2.1.js:18826:15)
at对象$watchCollectionAction[作为fn](file:///C:/TeamFoundation/PRE/js/libs/angular-1.2.1.js:11347:11)
在范围内。$摘要(file:///C:/TeamFoundation/PRE/js/libs/angular-1.2.1.js:11443:27)
在范围内。$apply(file:///C:/TeamFoundation/PRE/js/libs/angular-1.2.1.js:11682:24)
在HTMLDEVELENT。(file:///C:/TeamFoundation/PRE/js/libs/angular-1.2.1.js:17531:21)
在htmldevelment.jQuery.event.dispatch(file:///C:/TeamFoundation/PRE/js/libs/jQuery-1.8.2.js:3063:34)
位于htmldevelment.elemData.handle.eventHandle(file:///C:/TeamFoundation/PRE/js/libs/jQuery-1.8.2.js:2681:47)
第9101行,它位于“consoleLog”函数中,因此它似乎无法向控制台写入某些内容,失败了,但无论如何还是设法在那里写入了错误!我试过调试它,但实际上无法使它运行

当我将它们设置为替换“false”时,效果很好。我想让他们替换源元素,否则由于额外的元素,格式化是一个真正的痛苦,并且在升级之前能够做到这一点


这里有人能提供一些建议吗?

我无法用当前代码解决这个问题,但将父指令中的一些HTML移到子指令中解决了这个问题。我不明白为什么,但问题还是解决了。

我发现,如果将html模板包装在一个div中,那么它就可以正常工作。或者如果指令中有模板,而不是使用templateUrl

TypeError: undefined is not a function
    at ngRepeatAction (file:///C:/TeamFoundation/PRE/js/libs/angular-1.2.1.js:18826:15)
    at Object.$watchCollectionAction [as fn] (file:///C:/TeamFoundation/PRE/js/libs/angular-1.2.1.js:11347:11)
    at Scope.$digest (file:///C:/TeamFoundation/PRE/js/libs/angular-1.2.1.js:11443:27)
    at Scope.$apply (file:///C:/TeamFoundation/PRE/js/libs/angular-1.2.1.js:11682:24)
    at HTMLDivElement.<anonymous> (file:///C:/TeamFoundation/PRE/js/libs/angular-1.2.1.js:17531:21)
    at HTMLDivElement.jQuery.event.dispatch (file:///C:/TeamFoundation/PRE/js/libs/jQuery-1.8.2.js:3063:34)
    at HTMLDivElement.elemData.handle.eventHandle (file:///C:/TeamFoundation/PRE/js/libs/jQuery-1.8.2.js:2681:47)