1

У меня есть простой ng-repeat, который отображает список адресов. Рядом с каждым адресом находится кнопка, при нажатии на нее я хочу выполнить HTTP: POST. Я знаю, знаю, как выполнить REST вызов, но им изо всех сил, чтобы понять, как получить доступ к элементу POST'ed с повтором в мой контроллер:POSTing item from ng-repeat

HTML:

<form ng-submit="postAddress(address)"> 
    <ul> 
     <li ng-repeat="address in addresses"> 
      <p>{{address}}</p>        
      <button>Add Address</button> 
     </li> 
    </ul> 
    <p ng-show="addressSaved">Address Saved: {{addressSaved}}</p> 
</form> 

CTRL:

$scope.postAddress = function(address) { 
    console.log(address); 
    // My REST call goes here ////// 
    .success(
     $scope.addressSaved = true; 
    ) 
} 

ответ

0

В вашем случае address переменная, которая находится в обертке div, не знает, что address равно как address определено в ng-repeat.

В основном вам необходимо иметь отдельный form для каждого field, так что вы можете отправить каждый адрес в почтовом запросе, используя ng-submit.

Markup

<ul> 
    <li ng-repeat="address in addresses"> 
     <form ng-submit="postAddress(address)" 
      <p>{{address}}</p>        
      <button>Add Address</button> 
     </form> 
    </li> 
</ul> 
<p ng-show="addressSaved">Address Saved: {{addressSaved}}</p> 
0

Вы можете использовать нг-клик для каждой кнопки внутри нг-повтора.

<form ng-submit="postAddress(selectedAdress)"> 
    <ul> 
     <li ng-repeat="address in addresses"> 
      <p>{{address}}</p>        
      <button ng-click="selectedAdress = address">Add Address</button> 
     </li> 
    </ul> 
    <p ng-show="addressSaved">Address Saved: {{addressSaved}}</p> 
</form> 

Я надеюсь, что это сработает. SelectedAdress назначит перед отправкой формы. или вам следует отказаться от отправки.

<form > 
    <ul> 
     <li ng-repeat="address in addresses"> 
      <p>{{address}}</p>        
      <button type="button" ng-click="postAddress(address)">Add Address</button> 
     </li> 
    </ul> 
    <p ng-show="addressSaved">Address Saved: {{addressSaved}}</p> 
</form>