2

我是 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);
}

最初,我使用 laravel 及其“->with”在 vm.groups 中填充了工厂,因此类别将位于groups.categories. 至于vm.categories,我暂时将它设置为一个空数组,直到groupSelOnChange被解雇。

当我尝试 console.log 时,非法访问错误显示在行上:

$filter('filter')(vm.groups, searchObj, true);


有人能帮我吗?

4

1 回答 1

0

我发现了一种解决方法,只是为了避免这种说法
$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. 并且由于它已被删除,所以一切正常。

于 2015-08-27T15:02:56.423 回答