2015-08-27 45 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上遇到問題。由於它已被刪除,一切工作正常。