ฉันได้อัปเกรดแอปพลิเคชันเป็น 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"
};
});
เมื่อฉันตั้งค่าให้แทนที่ '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' มันก็ใช้ได้ดี ฉันต้องการให้พวกเขาแทนที่องค์ประกอบต้นทาง ไม่เช่นนั้นการจัดรูปแบบจะสร้างความเจ็บปวดอย่างมากเนื่องจากมีองค์ประกอบพิเศษ และสามารถทำได้ก่อนการอัปเกรด
ใครสามารถให้คำแนะนำใด ๆ ที่นี่?