从承诺数据设置表单输入值

时间:2016-11-29 10:19:25

标签: javascript html angularjs

因此,假设我将此表单发布到某个Web服务。

 <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>

这是我的Angular控制器:(我正在使用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;
           });
        };

所以我必须从promise函数数据(onOrderInitiation)更新我的html中的orderid输入值,然后提交表单。但我无论如何都无法更新。但是ctrl.orderid设置正确(我在日志中验证了它。)

当我尝试以JavaScript方式设置它时,值正确更改 - 当我在console.log时。但是在提交表单时,不会设置该值。

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

1 个答案:

答案 0 :(得分:0)

所以我通过在提交表单之前设置$ timeout来完成它。

$timeout(function () {
                document.getElementById("myForm").submit();
            }, 200);