Я обновил свое приложение до AngularJS 1.2.1 и столкнулся с проблемой с ранее работающим кодом, которую не могу решить.
У меня есть страница, на которой пользователь создает контент из заранее определенного списка контента, каждый из которых является отдельной директивой AngularJS. У меня есть служба, которая хранит массив настроенных элементов и связана с командой ng-repeat. Все, что я делаю, когда пользователь решает добавить новый элемент, — это помещаю его в массив и оставляю на усмотрение Angular для обновления пользовательского интерфейса. Мой 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"
};
});
Когда я установил для них замену «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)
Строка 9101, которая находится в функции «consoleLog», поэтому, похоже, что-то не удается записать в консоль, происходит сбой, но все равно удается записать туда ошибку! Я пытался отладить его и не могу его получить.
Когда я установил их для замены «false», все работает нормально. Я хочу, чтобы они заменили исходный элемент, иначе форматирование станет настоящей проблемой из-за дополнительного элемента, и я смог сделать это до обновления.
Здесь кто-нибудь может дать совет?