【问题标题】:Adding hidden form field to array in Angular在Angular中将隐藏的表单字段添加到数组
【发布时间】:2015-04-28 00:43:23
【问题描述】:

我正在尝试将“隐藏”字段添加到 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>

【问题讨论】:

  • 你不能那样做。检查这篇文章stackoverflow.com/questions/18446359/…
  • @user1200279 我将其称为隐藏字段,但我真的只想在提交时向我的数组添加一个额外的键/值。很确定我可以用控制器做到这一点,只是不知道如何。

标签: angularjs


【解决方案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)。

【讨论】:

  • 非常感谢。我是 Angular 的新手;所以我当然欢迎您就如何更好地构建我的控制器提出建议。
  • 我已经用一个例子更新了我的答案,但我假设你正在使用角度资源!如果不是,代码看起来会有所不同。
猜你喜欢
  • 2015-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
相关资源
最近更新 更多