我拨打$http.post
电话,但我的隐藏字段未随表单发布。
代码:
<sf:form ng-submit="post(form)" id="respond" >
<input type="hidden"name="form.replyTo" ng-model="replyTo" ng-value="1">
<input type="hidden" name="form.id" ng-model="id" ng-value="33" >
<input class="diskafield" type="text" ng-model="form.name" >
<input class="diskafield" type="text" ng-model="form.email" >
<textarea class="diskafield" name="comments" ng-model="form.body" required=""></textarea>
<input class="diskabtn" type="button" ng-click="post(form)" value="Post Comment">
</div>
</sf:form>
我的控制器是:
app.controller('AddCommentController', function ($scope, $http) {
$scope.name="";
$scope.email="";
$scope.body="";
$scope.id = "";
$scope.replyTo = '';
$scope.post= function(form) {
$http.post('http://localhost:8080/add', form).success(function(response){
}).error(function(response){
console.log(response);
})
}
});
答案 0 :(得分:4)
您的发布form
对象,因此,如果您需要将隐藏属性附加到该form
对象,
<input type="hidden"name="form.replyTo" ng-model="form.replyTo" ng-value="1">
<input type="hidden" name="form.id" ng-model="form.id" ng-value="33" >
您需要将模型更改为form.replyTo
和form.id
,如上所述。
似乎您错过了使用ng-model
和name
,
代表:
你提到$scope.name
并在表单中将其用作元素名称。
这不是使用它的方式,这里的范围变量和输入名称之间没有关系。
应该与ng-model
。
所以干净的例子应该是这样的。
$scope.form = {
name : "",
email : "",
body : "",
id : 33,
replyTo : 1
};
$scope.post= function(form) {
$http.post('http://localhost:8080/add', form).success(function(response){
}).error(function(response){
console.log(response);
})
}
<sf:form ng-submit="post(form)" id="respond" >
<input type="hidden"name="form.replyTo" ng-model="form.replyTo">
<input type="hidden" name="form.id" ng-model="form.id" >
<input class="diskafield" type="text" ng-model="form.name" >
<input class="diskafield" type="text" ng-model="form.email" >
<textarea class="diskafield" name="comments" ng-model="form.body" required=""></textarea>
<input class="diskabtn" type="button" ng-click="post(form)" value="Post Comment">
</div>
</sf:form>
实际上您可以删除这两个隐藏字段,因为隐藏字段数据存在于$scope.form
对象中。
这是一个有效的DEMO