gpt4 book ai didi

javascript - AngularJS 1.2.21 forEach 与 ng-grid 不兼容?

转载 作者:行者123 更新时间:2023-12-03 12:06:38 26 4
gpt4 key购买 nike

AngularJS 1.2.21 中是否存在与 forEach 相关的 bug,但 AngularJS 1.2.20 中没有?

我测试了以下代码(当加载 ng-grid 时):

var contor = 0;
$scope.$watch('gridOptions.$gridScope.columns', functionForColumnsChange, true);
...
function functionForColumnsChange(newv, oldv) {
if ( newv !== oldv ) {
console.log(contor++);
}
}

如果我使用:

https://ajax.googleapis.com/ajax/libs/angularjs/1.2.20/angular.js

输出为

0

但如果我使用

https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.js

输出为

TypeError: Cannot set property 'sortPriority' of undefined at http://angular-ui.github.io/ng-grid/lib/ng-grid.js:1668:36 at Object.forEach (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.js:325:18) at self.sortData (http://angular-ui.github.io/ng-grid/lib/ng-grid.js:1667:25) at self.sortColumnsInit (http://angular-ui.github.io/ng-grid/lib/ng-grid.js:1701:18) at Object.ngGridDirectives.directive.ngGridDirective.compile.pre.grid.init.then.dataWatcher [as fn] (http://angular-ui.github.io/ng-grid/lib/ng-grid.js:2943:42) at Scope.$get.Scope.$digest (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.js:12471:29) at Scope.$get.Scope.$apply (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.js:12736:24) at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.js:1438:15 at Object.invoke (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.js:3940:17) at doBootstrap (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.js:1436:14)

0

1

为什么会出现这个错误?为什么0后面是1?

如果我更改 ng-grid.js 注释 2 行:

//c.sortPriority = i + 1;
//push(c);

错误消息不再出现,但出现了“1”。

使用的 ng-grid 来自此来源:http://angular-ui.github.io/ng-grid/lib/ng-grid.js (缩小版也有同样的问题)。

<小时/>

稍后编辑:该问题似乎与此问题相关:https://github.com/angular/angular.js/commit/36625de0d3ebc1fc091af474d942c6ce16b0a1c0

差异仅存在于 Google ChromeMozilla Firefox 中。

IE8 中,AngularJS 的两个版本都会打印 0 和 1。IE8 中的输出:

TypeError: 'undefined' is null or not an object

0

1

最佳答案

问题是我有一个错误的 $scope.sortInfo 数组:

$scope.sortInfo = {fields: ["N", "A", "B", "C"], directions: ['asc']};

即使此时“N”不是一列。

我找到了 3 种可能的解决方案:

1)更改数组:

$scope.sortInfo = {fields: ["A", "B", "C"], directions: ['asc']};

2) 更改 ng-grid 使其更加宽松:

                if ( typeof c !== 'undefined' ) {
c.sortPriority = i + 1;
push(c);
}

3) 更改 AngularJS 使其更加宽松:

for (key = 0; key < obj.length; key++) {
if ( typeof obj[key] !== 'undefined' ) {
iterator.call(context, obj[key], key);
}
}

关于javascript - AngularJS 1.2.21 forEach 与 ng-grid 不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25161312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com