AngularJS - 处理错误错误:[ng:areq] 在此特殊情况下 (?)
AngularJS - handling error Error: [ng:areq] in this special case (?)
>伙计们。
我试图设置一个带有角度指令的手风琴, 但我在控制台中收到此错误.
Error: [ng:areq] http://errors.angularjs.org/1.3.2/ng/areq?p0=CustomDirectivesController&p1=not%20a%20function%2C%20got%20undefined
at Error (native)
at file:///Users/Marcelo/Desktop/Online-Colleges/capi/view/scripts/angular/angular.min.js:6:416
at Nb (file:///Users/Marcelo/Desktop/Online-Colleges/capi/view/scripts/angular/angular.min.js:19:417)
at ob (file:///Users/Marcelo/Desktop/Online-Colleges/capi/view/scripts/angular/angular.min.js:20:1)
at file:///Users/Marcelo/Desktop/Online-Colleges/capi/view/scripts/angular/angular.min.js:75:177
at file:///Users/Marcelo/Desktop/Online-Colleges/capi/view/scripts/angular/angular.min.js:57:112
at r (file:///Users/Marcelo/Desktop/Online-Colleges/capi/view/scripts/angular/angular.min.js:7:408)
at I (file:///Users/Marcelo/Desktop/Online-Colleges/capi/view/scripts/angular/angular.min.js:56:496)
at g (file:///Users/Marcelo/Desktop/Online-Colleges/capi/view/scripts/angular/angular.min.js:51:299)
at g (file:///Users/Marcelo/Desktop/Online-Colleges/capi/view/scripts/angular/angular.min.js:51:316)
这是我完整的AngularJS代码
customDirectives = angular.module('customDirectives', []);
customDirectives.directive('customCollapse', function () {
return {
require: '?ngModel',
scope:{
ngModel: '='
},
restrict: 'A',
template: '<div class="panel-group" id="{{panelId}}">'
<div class="panel panel-default" ng-repeat-start="item in ngModel">'
<div class="panel-heading">'
<h4 class="panel-title">'
<a ng-click="toggleCollapsedStates($index)" href="#{{panelBaseId}}-{{$index}}">{{item.title}}</a>'
</h4>'
</div>'
<div id="{{panelBaseId}}-{{$index}}" data-parent="#{{panelId}}" class="panel-collapse collapse">'
<div class="panel-body">{{item.content}}</div>'
</div>'
</div>'
<div ng-repeat-end></div>'
</div>',
link: function (scope, el, attrs) {
scope.panelBaseId = attrs.collapsePanelBodyId;
scope.panelId = attrs.collapsePanelId;
$(document).ready(function(){
angular.forEach(scope.ngModel, function(value, key){
if (value.collapsed)
{
$("#" + scope.panelBaseId + "-" + key).collapse('show');
}
});
});
scope.toggleCollapsedStates = function(ind){
angular.forEach(scope.ngModel, function(value, key){
if (key == ind)
{
scope.ngModel[key].collapsed = !scope.ngModel[key].collapsed;
$("#" + scope.panelBaseId + "-" + ind).collapse('toggle');
}
else
scope.ngModel[key].collapsed = false;
});
}
}
};
});
angular.module('CustomComponents', ['customDirectives']);
function CustomDirectivesController($scope)
{
$scope.collapseData = [
{
title: "Collapse Group Item Title 1",
content: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.",
collapsed: true
},
{
title: "Collapse Group Item Title 2",
content: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.",
collapsed: false
},
{
title: "Collapse Group Item Title 2",
content: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.",
collapsed: false
}
];
}
还有我的 HTML:
<div ng-app="customDirectives">
<div ng-controller="CustomDirectivesController">
<div custom-collapse ng-model="collapseData" collapse-panel-id="collapse-panel" collapse-panel-body-id="collapse-panel-body"></div>
</div>
</div>
我刚刚检查了有关同一问题的其他问题,但我看到我做得很好,可以看到我在这里犯了什么错误?
那么,有人可以解释我发生了什么吗?
是的,实际上我只是通过设置正确的控制器和依赖项来处理此错误。
在html中,一切都很好。
问题是我正在声明全局函数。看看新代码,这样就会明白:
var customDirectives = angular.module('customDirectives', []);
customDirectives.directive('customCollapse', function () {
return {
require: '?ngModel',
scope:{
ngModel: '='
},
restrict: 'A',
template: '<div class="panel-group" id="{{panelId}}">'
<div class="panel panel-default" ng-repeat-start="item in ngModel">'
<div class="panel-heading">'
<h4 class="panel-title">'
<a ng-click="toggleCollapsedStates($index)" href="#{{panelBaseId}}-{{$index}}">{{item.title}}</a>'
</h4>'
</div>'
<div id="{{panelBaseId}}-{{$index}}" data-parent="#{{panelId}}" class="panel-collapse collapse">'
<div class="panel-body">{{item.content}}</div>'
</div>'
</div>'
<div ng-repeat-end></div>'
</div>',
link: function (scope, el, attrs) {
scope.panelBaseId = attrs.collapsePanelBodyId;
scope.panelId = attrs.collapsePanelId;
$(document).ready(function(){
angular.forEach(scope.ngModel, function(value, key){
if (value.collapsed)
{
$("#" + scope.panelBaseId + "-" + key).collapse('show');
}
});
});
scope.toggleCollapsedStates = function(ind){
angular.forEach(scope.ngModel, function(value, key){
if (key == ind)
{
scope.ngModel[key].collapsed = !scope.ngModel[key].collapsed;
$("#" + scope.panelBaseId + "-" + ind).collapse('toggle');
}
else
scope.ngModel[key].collapsed = false;
});
}
}
};
})
customDirectives.controller('CustomDirectivesController', function($scope)
{
$scope.collapseData = [
{
title: "Collapse Group Item Title 1",
content: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.",
collapsed: true
},
{
title: "Collapse Group Item Title 2",
content: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.",
collapsed: false
},
{
title: "Collapse Group Item Title 5",
content: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.",
collapsed: false
},
{
title: "Collapse Group Item Title 4",
content: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.",
collapsed: false
}
];
});
相关文章:
- 如何避免JSON.stringify在特殊情况下返回undefined,从而为JSON.parse创建字符串失败
- 在这种特殊情况下,在PHP脚本之间传递值
- JavaScript,在这种特殊情况下立即调用函数
- ObjectId数组将不会在没有错误的情况下填充
- 如何在不获得引用错误的情况下将不存在的JavaScript对象与未定义的对象进行比较
- 在这种特殊情况下,闭包是如何工作的
- 如何在不出现异步错误的情况下加载 Gist 代码
- AngularJS - 处理错误错误:[ng:areq] 在此特殊情况下 (?)
- 得到"SCRIPT70:许可被拒绝”;仅在EDGE浏览器/JJAVASCRIPT错误的情况下
- 在特殊情况下禁用javascript中的ddl更改事件
- 为什么在这种特殊情况下视图没有更新?($scope.$apply)
- 在这种特殊情况下,如何使用Jquery获取标签的文本
- 如何在没有 ESLint no-unused-var 错误的情况下公开全局 javascript 函数
- 在特殊情况下使用Angularjs OrderBy进行排序
- jQuery.prop在没有错误的情况下停止执行
- 可以't让underscore.js在没有语法错误的情况下使用大括号
- Colorbox -不能在没有错误的情况下维护多个组
- 通过jQuery设置特殊情况下的除法高度
- 在这种特殊情况下如何将数组转换为对象
- 为什么我的正则表达式在这种特殊情况下不起作用