2016-11-29 2 views
0

Итак, скажем, я отправляю эту форму на веб-службу.Значение ввода формы формы из данных обещания

<form name="myForm" id="myForm" method="post" action="https://servicelink.....etc" accept-charset="utf-8"> 
      <input type="hidden" name="accepturl" value="{{$ctrl.accepturl}}" ng-model="$ctrl.accepturl"> 
      <input type="hidden" name="callbackurl" value="{{$ctrl.callbackurl}}" ng-model="$ctrl.callbackurl"> 
      <input type="hidden" name="orderid" value="{{$ctrl.orderid}}" ng-model="$ctrl.orderid"> 
     </form> 

Вот мой Угловая контроллер: (я использую AngularJS 1.5.8 с компонентами)

function controller(someservice) { 
    var ctrl = this; 
    ctrl.accepturl = $window.location.href; 
    ctrl.callbackurl = "https://........"; 

    ctrl.placeOrder = function() { 
     someservice.placeOrder(ctrl.amount).then(onOrderInitiation, onOrderInitiationError); 
    }; //$http.post call is made there 

    function onOrderInitiation(data) { 
     ctrl.orderid = data; 
     // I tried to set the input value by javascript as well with no success 
     // document.getElementsByName('orderid').value = data; 

     document.getElementById("flexwinSubmit").submit(); 
    } 
} 

здесь является служба, где $ http.post сделано:

this.placeOrder = function(amount){ 
      return $http.post("/rest/.........) 
       .then(function(response){ 
       return response.data.orderId; 
      }); 
     }; 

Поэтому я должен обновить значение ввода заказа в моем html из данных функции обещания (onOrderInitiation), а затем отправить форму. Но я никак не мог его обновить. Однако ctrl.orderid установлен правильно (я проверял это в журналах.)

Когда я попытался установить его как способ JavaScript, значение изменилось правильно - когда i console.log его. Но при отправке формы значение не будет установлено.

document.getElementsByName('orderid').value = data; 
+0

Возможный дубликат [Как вернуть ответ от асинхронного вызова?] (Http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an -асинхронный вызов) – baao

+0

вы должны использовать ng-значение не просто значение, то есть ng-value = "ctrl.orderid" – GraveyardQueen

+0

@GraveyardQueen это не имеет никакого значения :(Интересная вещь, когда я проверяю ее в браузере так значение устанавливается, но не при отправке формы! – Hazu

ответ

0

Так что я сделал это, установив $ timeout перед отправкой формы.

$timeout(function() { 
       document.getElementById("myForm").submit(); 
      }, 200); 
Смежные вопросы