如何动态添加输入表单?

时间:2014-02-27 21:31:18

标签: angularjs

我正在尝试在单击“New Item”时动态添加输入表单。但是真的不知道如何在js部分编写代码。任何的想法?

这是我的代码:

<!doctype html>
<html ng-app>
  <head>
    <title>Angular - My Notes</title>
    <link rel="stylesheet" type="text/css" href="css/index.css">

  <body>
    <h1>My Notes</h1>
    <div ng-controller="Note">
      <input type="text" placeholder="Question">
      <input ng-class="{'blockInput': !inlineChecked}" type="text" placeholder="enter text...">
      <input type="checkbox" name="check" value="inline" ng-model="inlineChecked"> Inline
      <br>
      <button ng-click="add()">New Item</button>
    </div>

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular.min.js"></script>
    <script type="text/javascript">

      var Note = function($scope){
        // create a variable contain new input forms?? 
      }


    </script>
  </body>
</html>

2 个答案:

答案 0 :(得分:34)

使用数组和ngRepeat ...

<!doctype html>
<html ng-app>
  <head>
    <title>Angular - My Notes</title>

  <body>
    <h1>My Notes</h1>
    <div ng-controller="Note">
      <div ng-repeat="item in items">
        <input type="text" placeholder="{{item.questionPlaceholder}}" ng-model="item.question">
        <input ng-class="{'blockInput': !item.inlineChecked}" type="text" placeholder="enter text..." ng-model="item.text">
        <input type="checkbox" name="check" value="inline" ng-model="item.inlineChecked"> Inline
      </div>
      <button ng-click="add()">New Item</button>
    </div>

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular.min.js"></script>
    <script type="text/javascript">

      var Note = function($scope){
        $scope.items = [];

        $scope.add = function () {
          $scope.items.push({ 
            inlineChecked: false,
            question: "",
            questionPlaceholder: "foo",
            text: ""
          });
        };
      }


    </script>
  </body>
</html>

JsBin ...... http://jsbin.com/fusapojo/4/edit?html,output

答案 1 :(得分:3)

HTML:

<div ng-repeat="flavour in flavours" class="form-group">
    <label class="col-sm-1 control-label">Name</label>
    <div class="col-sm-2">
        <div class="input-group">
                <input type="text" class="form-control" placeholder="" ng-model="flavour.name">
        </div>                
    </div>
</div>

JS: $ scope.flavours = [];

$scope.addFlavour = function () {
    $scope.flavours.push({ 
        name: "",
        pg: 100,
        vg: 0,
        quantity: 5.0
    });
}