在Angular中向数组添加隐藏表单字段

时间:2015-02-25 20:25:35

标签: angularjs

我正在尝试添加"隐藏"字段到Angular中的基本形式(使用Firebase作为后端)。在提交表单时,我无法确定如何将此字段作为数组的一部分包含在内。我想将{type: 'Basic'}作为数组的一部分。我查看了本网站上的其他相关帖子,但我仍然不确定如何应用于我的特定情况。

有关如何执行此操作的任何建议?

使用Javascript:

myApp.controller('NewProjectCtrl', function ($location, Projects) {
var editProject = this;
editProject.type = 'Basic';  //this is the hidden field
editProject.save = function () {

    Projects.$add(editProject.project).then(function(data) {
        $location.path('/');
    });
};
});

HTML:

<form>
   <div class="control-group form-group">
     <label>Name</label>
     <input type="text" name="name" ng-model="editProject.project.name">
   </div>
   <label>Description</label>
   <textarea name="description" class="form-control" ng-model="editProject.project.description"></textarea>
   <button ng-click="editProject.save()" class="btn btn-primary">Save</button>
</form>

1 个答案:

答案 0 :(得分:1)

您不需要隐藏的表单字段,只需在控制器中提交您的值,如下所示:

editProject.save = function () {
  editProject.project.type = 'Basic';
  Projects.$add(editProject.project).then(function(data) {
    $location.path('/');
  });
};

您正在提交editProject.project的所有属性,正如您在开发者控制台中所注意到的那样。


我会把控制器的结构有点不同......这是一个例子(我考虑你正在使用angular-resource,其中Projects返回一个资源?):

myApp.controller('NewProjectCtrl', function ($location, Projects) {
  $scope.project = new Projects({type: 'Basic'});

  $scope.save = function () {
    $scope.project.$save().then(function(data) {
      $location.path('/');
    });
  };
});

<form ng-submit="save()">
   <div class="control-group form-group">
     <label>Name</label>
     <input type="text" name="name" ng-model="project.name">
   </div>
   <label>Description</label>
   <textarea name="description" class="form-control" ng-model="project.description"></textarea>
   <input type="submit" value="Save" class="btn btn-primary" />
</form>

save函数将$ $保存新的项目资源(这是一个默认方法,将在给定的资源URL上进行POST)。