2015-08-27 37 views
2

我是Angular JS的新手。我最近碰到了这个奇怪的错误:
非法访问
(匿名函数)@ angular.js:12416 $ @ GET angular.js:9203
(匿名函数)@ angular.js:completeOutstandingRequest 17785
@角。 js:5490
@ angular.js:5762

Angular JS非法访问

我在互联网上搜索有关这个错误,但它不是那么出名。

理念:
有那么我组的下拉选择。然后,当它的值发生变化时,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并与工厂vm.groups它“ - >与“这样的类别将在groups.categories下。至于vm.categories,我已经将它设置为一个空阵列,直到groupSelOnChange已经发射。

当我试图执行console.log中,非法访问错误显示就行了:

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


有人能帮助我吗?

回答

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