2016-02-10 5 views
0

Я заполняю таблицу из коллекции, используя ng-repeat, в этом я имею флажок, который я хочу отключить, это определенное условие return true. Однако, когда я загружаю страницу, моя функция идет в бесконечном цикле.ng-disabled вызов функции идет в бесконечном цикле под ng-repeat

Это мой HTML:

<tr ng-repeat="s in seriesList track by $index"> 
    <td><input id="id{{$index+1}}" class="checkbox-custom" type="checkbox" ng-disabled="checkNumbersExitsForSeries(s.series_name)" ng-model="s.selected" ng-click="tickCheck(s, s.selected)"> 
     <label for="id{{$index+1}}" class="checkbox-custom-label">&nbsp;</label> 
    </td> 
    <td class="mailbox-name" style="width:350px;">{{s.series_name}}</td> 
    <td><input type="button" ng-click="editSeries(s)" value="Edit" name="edit" class="btn btn-info" /></td> 
</tr> 

Ниже MYFUNCTION 'checkNumbersExitsForSeries' в угловом контроллере:

$scope.checkNumbersExitsForSeries= function(series_name){ 
    console.log("in"); 

    var params = { 
       'seriesName': series_name 
      }; 

    $http.post('/admin/checkNumbersExistsForSeries', params, options) 
    .then(function successCallback(response){ 
    if(response.data.success)  
    { 
     console.log("response"); 
     return true; 
    } 
    else{ 
     console.log("no response"); 
     return false; 
    } 

    },function errorCallback(response){ 
     if(response.status = '401') 
      $window.location = "#/login" 
    }); 
}; 

Ниже кода мой контроллер узла:

exports.checkNumbersExistsForSeries = function(req, res) 
{ 
    numberRegisterModel.find({series:req.body.seriesName, status:{$ne:'deleted'}}, function(err, data){ 
     if(data){ 
      console.log("got it"); 
      res.json({success:true, data1:data}); 
     } 
     else{ 
      console.log("not got it"); 
      console.log("error :" + err); 
     } 
    }); 
} 

ответ

0

Никогда не свяжите директива для функции, выполняющей вызов ресурса. Цикл дайджест работает часто, и это заставит ваше приложение выдавать тонны запросов.

Ваш checkNumbersExitsForSeries() функция делает именно это. Решением является итерация seriesList при загрузке из бэкэнд, а затем вызов checkNumbersExitsForSeries() для каждой записи (или даже ее пакетный вызов) и сохранение результатов в хеше, введенном по пунктам в seriesList.

+0

любое альтернативное решение для этого? –

+0

Как указано во втором абзаце. –

+0

sry, я не знаю много, не могли бы вы рассказать мне, как хранить в хеше с помощью элементов в списке серий? –