2014-11-20 3 views
0

Здравствуйте, я разрабатываю приложение, основанное на AngularJS и Laravel, но у меня проблема с частью AngularJS.Отправить идентификатор по опции get

У меня есть этот код

$scope.archive = function() { 
    var oldnodes = $scope.nodes; 
    angular.forEach(oldnodes, function(node) { 
    if (node.done) 

     alert(node.id); 
     $http.get('http://localhost/copiaAngus/public/deleteSelected/(node.id)').success(function(data) 
     { 
      alert(node.id);/**Show a id of checkbox selected***/ 
      $timeout(function() { 
       $location.path('/'); 
       }); 
     }); 
    }); 

}; 

В предупреждающем сообщении вы можете показать идентификатор выбранного узла, и я не знаю, как передать все ид в Laravel.

Laravel часть

Route::get("deleteSelected/{id}", function() 
    { 
     $posts = Nodes::destroy($id); 
     return Response::json(array(
      "posts"  =>  $posts 
     )); 

    }); 

разрушающий работают с этой формой

$posts = Nodes::destroy(1,2); 
+0

'$ http.get ('http: //localhost/copiaAngus/public/deleteSelected/'+node.id)'? – lukasgeiter

+0

Хорошо! Я пытаюсь сделать эту опцию и не работает :(Я обновляю вопрос. – jc1992

+0

Итак, вы хотите сразу отправить на сервер все идентификаторы узлов ('node.done == true')? – lukasgeiter

ответ

0

Существует различные способы передачи набора идентификаторов на сервер. Давайте добавим их в URL-адрес и разделим список точкой с запятой. Таким образом, наш окончательный URL будет выглядеть примерно так:

http://localhost/copiaAngus/public/deleteSelected/1;4;5 

Сначала мы должны изменить код на стороне сервера, чтобы иметь возможность принять этот параметр

Route::get("deleteSelected/{ids}", function($ids) 
{ 
    $ids_array = explode(';', $ids); 
    $posts = Nodes::destroy($ids_array); 
    return Response::json(array(
     "posts" => $posts 
    )); 
}); 

А теперь, вот, как генерировать URL

$scope.archive = function() { 
    // filter the nodes so we only have the "done" ones 
    var nodes = $scope.nodes.filter(function(node){ 
     return node.done; 
    }); 

    // now build a new array that only contains the ids 
    var ids = nodes.map(function(node){ 
     return node.id; 
    }); 

    $http.get('http://localhost/copiaAngus/public/deleteSelected/'+ids.join(';')).success(function(data){ 
     alert(data.posts + ' post(s) deleted'); 
     $timeout(function(){ 
      $location.path('/'); 
     }); 
    }); 
}; 
+0

Спасибо, я понимаю всю часть php laravel, в угловой части я не понимаю, почему именно node.map? Код работает правильно! – jc1992

+0

['map'] (https: // developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map) позволяет вам перебирать массив и создавать новый, содержащий возвращаемые вами значения. Таким образом, из массива объектов с полным узлом мы создайте массив только из ids. – lukasgeiter

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