javascript - Angular JS 从一个 div 收集所有输入值

标签 javascript angularjs input

我是 Angular JS 的新手,我创建了一个带有输入元素的 div,但我没有将 ng-model 用于输入框。

<div class="row">
    <br>
    <div class="col-sm-10" id="rankingForm" >
        <p ng-repeat=" x in $ctrl.outputProductAttributeValueList">
             {{x}} &nbsp;&nbsp;&nbsp; <input type="text" />
        </p>
        <br>
        <button type="submit" ng-click="$ctrl.onRankingFormSubmit()"> SUBMIT</button>
    </div>
</div>

当我点击提交按钮时,我必须访问所有输入值。请帮助我如何做到这一点。我试过如下。

angular.module("productList")
.component("productList",{
       templateUrl : "product-list/product-list.template.html",
        controller : ["$http" ,"$scope","$document",function productListController($http,$scope,$document){
            var self = this;

            self.outputProductAttributeValueList =[ "age", "gender","all"];

            self.onRankingFormSubmit = function () {
                var queryResult = $document[0].getElementById("rankingForm")
                console.log(queryResult);
                // HERE queryResult is printing how to proceed further
            };

        }]
    });

现在我想收集所有由 ng-repeat 动态创建的输入值。请告诉我该怎么做?

最佳答案

AngularJS ngModel是将 View 绑定(bind)到模型而不是直接与 DOM 交互的标准方法。

您可以获得 div id="rankingForm" 中的所有输入,您可以这样做:

var inputs = $document[0]
    .getElementById('rankingForm')
    .getElementsByTagName('input');

或使用 Document.querySelectorAll() :

var inputs = $document[0].querySelectorAll('#rankingForm input');

一旦你有了 inputs,然后遍历所有输入以获取值。请注意,我已将属性 name 添加到输入中:

没有 ngModel 的代码:

angular
  .module('App', [])
  .controller('AppController', ['$scope', '$document', function ($scope, $document) {
    $scope.outputProductAttributeValueList = ['age', 'gender', 'all'];

    $scope.onRankingFormSubmit = function () {
      var inputs = $document[0].querySelectorAll('#rankingForm input');
      
      inputs.forEach(function(input) {
        console.log(input.name + ': ' + input.value);
      });
    };
  }]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.9/angular.min.js"></script>

<div ng-app="App" ng-controller="AppController" class="row">
  <br>
  <div class="col-sm-10" id="rankingForm" >
    <p ng-repeat="x in outputProductAttributeValueList">
      {{x}} &nbsp;&nbsp;&nbsp; <input type="text" name="{{x}}" />
    </p>
    <br>
    <button type="submit" ng-click="onRankingFormSubmit()">SUBMIT</button>
  </div>
</div>

使用 ngModel 编码:

angular
  .module('App', [])
  .controller('AppController', ['$scope', '$document', function ($scope, $document) {
    $scope.outputProductAttributeValueList = ['age', 'gender', 'all'];
    
    // Model inputs
    $scope.inputs = {};

    $scope.onRankingFormSubmit = function () {      
      $scope.outputProductAttributeValueList.forEach(function(input) {
        // Access to model inputs: $scope.inputs[input]
        console.log(input + ': ' + $scope.inputs[input]);
      });
    };
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.9/angular.min.js"></script>

<div ng-app="App" ng-controller="AppController" class="row">
  <br>
  <div class="col-sm-10" id="rankingForm" >
    <p ng-repeat="x in outputProductAttributeValueList">
      {{x}} &nbsp;&nbsp;&nbsp; <input type="text" ng-model="inputs[x]" />
    </p>
    <br>
    <button type="submit" ng-click="onRankingFormSubmit()">SUBMIT</button>
  </div>
</div>

关于javascript - Angular JS 从一个 div 收集所有输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40927272/

相关文章:

javascript - 发送/接收图像以响应 http

javascript - 更改滚动 JS/jQuery 上的图像

JavaScript - 是否有必要先检查条件

angularjs - 如何检测特定的 firebase 存储路径数据是否已更改

Java-如何在现有数组中插入用户输入位置

javascript - 如何使用 AJAX/jQuery 检查链接是否被单击

javascript - Angular 填充输入字段

javascript - 根据js中的颜色的数字/百分比填充图像

javascript - 在输入时启动/停止 js 动漫时间轴的最佳方法是什么

javascript - 输入值不显示在字段中