【发布时间】:2017-04-13 07:07:23
【问题描述】:
假设我将此表单发布到某个网络服务。
<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;
【问题讨论】:
-
你必须使用 ng-value 而不仅仅是 value,即 ng-value="ctrl.orderid"
-
@GraveyardQueen 它没有任何区别:(当我在浏览器中检查它时有趣的事情是设置了值但在提交表单时没有!
-
@baao 我认为这里有所不同,因为变量设置了新值,但在提交表单时没有。正如我在检查此 DOM 时提到的,因此值设置正确!
-
您是否尝试检查您是否从服务中获取“数据”?
标签: javascript html angularjs