Angularjs不会发布隐藏的价值

时间:2015-06-25 15:05:57

标签: javascript jquery angularjs

我拨打$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);
        })
    }
});

1 个答案:

答案 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.replyToform.id,如上所述。

似乎您错过了使用ng-modelname

代表:

你提到$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