AngularJS非法访问
Angular JS illegal access
我是 Angular JS 的新手。我最近遇到了这个奇怪的错误:
非法访问
(匿名函数)@angular.js:12416$get @angular.js:9203
(匿名函数)@angular.js: 17785
completeOutstandingRequest @angular.js:5490
(匿名函数)@angular.js:5762
我在互联网上搜索过这个错误,但它不是那么有名。
想法:
所以我有一个组的下拉选择。然后,当它的值发生变化时,groupSelOnChange()
将触发并填充类别选择。类别的下拉选择取决于所选 group.id;
请注意,在我的本地机器上一切正常。当我将应用程序上传到共享主机时遇到错误。
这些是我的模型
<button type="button" class="btn btn-primary"
ng-model="vm.groupSel"
bs-options="sel.id as sel.name for sel in vm.groups"
bs-select ng-change="vm.groupSelOnChange(vm.groupSel)"
placeholder="Choose your category">
Action <span class="caret"></span>
</button>
<button type="button" class="btn btn-primary"
ng-model="vm.categorySel"
bs-options="sel.id as sel.name for sel in vm.categories"
bs-select ng-change="vm.categorySelOnChange(vm.categorySel)"
placeholder="Choose">
Action <span class="caret"></span>
</button>
在我的控制器上
function groupSelOnChange(sel) {
searchObj['id'] = parseInt(sel);
$timeout(function(){
var found = $filter('filter')(vm.groups, searchObj, true);
return vm.categories = found[0].categories;
}, 500);
}
最初我在 vm.groups 中填充了一个使用 laravel 的工厂及其“->with”,因此类别将在 groups.categories
下。至于 vm.categories
,我暂时将它设置为一个空数组,直到 groupSelOnChange
触发。
当我尝试 console.log 时, 非法访问 错误显示在行中:
$filter('filter')(vm.groups, searchObj, true);
有人可以帮助我吗?
我发现了一个解决方法来避免这种说法
$filter('filter')(vm.groups, searchObj, true);
并根据此对我的控制器进行了修改:
function groupSelOnChange(sel) {
searchObj['id'] = parseInt(sel);
$timeout(function(){
var found = $filter('filter')(vm.groups, searchObj, true);
return vm.categories = found[0].categories;
}, 500);
}
到这个:
function groupSelOnChange(sel) {
var found = $filter('filter')(vm.groups, function(value, index, array) {
if (value.id == sel) {
return value;
}
}, true);
vm.categories = found[0].categories;
}
我想我在 searchObj
上遇到了问题。由于它已被删除,所以一切正常。
我是 Angular JS 的新手。我最近遇到了这个奇怪的错误:
非法访问
(匿名函数)@angular.js:12416$get @angular.js:9203
(匿名函数)@angular.js: 17785
completeOutstandingRequest @angular.js:5490
(匿名函数)@angular.js:5762
我在互联网上搜索过这个错误,但它不是那么有名。
想法:
所以我有一个组的下拉选择。然后,当它的值发生变化时,groupSelOnChange()
将触发并填充类别选择。类别的下拉选择取决于所选 group.id;
请注意,在我的本地机器上一切正常。当我将应用程序上传到共享主机时遇到错误。
这些是我的模型
<button type="button" class="btn btn-primary"
ng-model="vm.groupSel"
bs-options="sel.id as sel.name for sel in vm.groups"
bs-select ng-change="vm.groupSelOnChange(vm.groupSel)"
placeholder="Choose your category">
Action <span class="caret"></span>
</button>
<button type="button" class="btn btn-primary"
ng-model="vm.categorySel"
bs-options="sel.id as sel.name for sel in vm.categories"
bs-select ng-change="vm.categorySelOnChange(vm.categorySel)"
placeholder="Choose">
Action <span class="caret"></span>
</button>
在我的控制器上
function groupSelOnChange(sel) {
searchObj['id'] = parseInt(sel);
$timeout(function(){
var found = $filter('filter')(vm.groups, searchObj, true);
return vm.categories = found[0].categories;
}, 500);
}
最初我在 vm.groups 中填充了一个使用 laravel 的工厂及其“->with”,因此类别将在 groups.categories
下。至于 vm.categories
,我暂时将它设置为一个空数组,直到 groupSelOnChange
触发。
当我尝试 console.log 时, 非法访问 错误显示在行中:
$filter('filter')(vm.groups, searchObj, true);
有人可以帮助我吗?
我发现了一个解决方法来避免这种说法$filter('filter')(vm.groups, searchObj, true);
并根据此对我的控制器进行了修改:
function groupSelOnChange(sel) {
searchObj['id'] = parseInt(sel);
$timeout(function(){
var found = $filter('filter')(vm.groups, searchObj, true);
return vm.categories = found[0].categories;
}, 500);
}
到这个:
function groupSelOnChange(sel) {
var found = $filter('filter')(vm.groups, function(value, index, array) {
if (value.id == sel) {
return value;
}
}, true);
vm.categories = found[0].categories;
}
我想我在 searchObj
上遇到了问题。由于它已被删除,所以一切正常。