2015-08-27 4 views
2

Я новичок в Angular JS. Я недавно столкнулся с этой странной ошибкой:
незаконный доступ
(анонимные функции) @ angular.js: 12416 $ прибудете @ angular.js: 9203
(анонимная функция) @ angular.js: 17785
completeOutstandingRequest @ угловой. ЯШИ: 5490
(анонимная функция) @ angular.js: 5762

Угловой 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); 
} 

Изначально я заселили vm.groups с завода с использованием Laravel и его «-> с "так что категории будут ниже 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. И поскольку он был удален, все работает нормально.

Смежные вопросы