【发布时间】:2014-03-10 21:36:34
【问题描述】:
我已将我的应用程序升级到 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>
这里的所有指令都继承了父作用域,并且它们都非常简单。
angular.module("App").directive("directiveA", function () {
return {
restrict: "E",
replace: true,
templateUrl: "partials/DriectiveA.html"
};
});
当我将它们设置为替换“真”时,在将它们添加到数组时控制台中出现以下错误并且项目不呈现:
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)
第 9101 行,它位于“consoleLog”函数中,因此它似乎无法将某些内容写入控制台,失败了,但无论如何都设法在那里写入错误!我已经尝试过调试它,但实际上无法做到。
当我将它们设置为替换“假”时,它工作正常。我希望他们替换源元素,否则由于额外的元素,格式化是一个真正的痛苦,并且能够在升级之前这样做。
有人可以在这里提供任何建议吗?
【问题讨论】:
标签: angularjs angularjs-directive