2014-10-20 5 views
0

Как я могу вызвать функцию один раз. Когда я это делаю, называя это петлями. HTML: вызов функции из контроллера. найти значение индекса.AngularJS http post loop

<body ng-controller="MainCtrl"> 
     <div ng-repeat="id in arr"> 
    {{sendPost(id)}} 
     </div> 
    <br> 
     {{namestr}} 
    </body> 

JS: функция запроса сервера для значения

app.controller('MainCtrl', function($scope, $http) { 
    $scope.arr=[]; 
    $scope.arr.push(1); 
    $scope.arr.push(2); 
    $scope.arr.push(3); 
    $scope.namestr=""; 
    $scope.newName = ""; 
    $scope.sendPost = function(names) { 
     $scope.namestr=$scope.namestr+' '+names; 
     var data = $.param({ 
      json: JSON.stringify({ 
       name: names 
      }) 
     }); 
     $http.post("/echo/json/", data).success(function(data, status) { 
      //select from database 
      if (data==1){ 
      return '1111' 
      } else { 
      return '2222' 
      } 
     }) 
    }        
    }); 

http://plnkr.co/edit/Zhao5JuEeuG1KGXNhLS0?p=preview

ответ

1

Это плохая идея, в общем

{{sendPost('Василий')}} 

метод sendPost и вместе с ним http.post будет вызывается с каждым процессом $ digest, а $ digest запускается путем изменения модели, поэтому это

$scope.hello = data; 

приведет к еще $ дайджеста и еще один запрос HTTP, объяснить более, что вы хотите достичь, и я продлить plunker

+0

У меня есть директива таблицы. Директива принимает данные и отображает таблицу. Во время рендеринга, в зависимости от типа поля, запрашивается запрос поля значения из каталога. Каталог в базе данных. Директива вызывает функцию на ссылке от главного контроллера и получает значение поля. – Gopard

+0

'' + '{{ngDirectiveFunc ({valueId: строка [fields.colvalue], directName: поля .direct})}} '+ – Gopard

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