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 上遇到了问题。由于它已被删除,所以一切正常。