想要在AngularJS中获取表单元素值的数组

时间:2015-10-20 06:27:52

标签: angularjs

HTML表单代码

<form ng-submit="mysubmit()" ng-controller="question_post" >
    <textarea name="question" id="question" ng-model="question"></texarea> 
    <input type="text" name="opt[]" ng-model="opt[]" />
    <input type="text" name="opt[]" ng-model="opt[]" />
</form>

Angular JS代码

var obj = angular.module('root', []);

obj.controller('question_post', ['$scope','$http', function ($scope,$http) {
    $scope.mysubmit = function(){
    $http({
        url: "some_url",
        method: "POST",
        headers: {'Content-Type': 'application/x-www-form-urlencoded'},
    data:$.param({user_id:1,'question':$scope.question,'option':$scope.opt})
            }).success(function(data, status, headers, config) {
            console.log(data);
                alert(data);
                $scope.data = data;
            }).error(function(data, status, headers, config) {
                $scope.status = status;
        });
        }
   }]);

上面的代码在写ng-model="opt[]"时返回错误,ng-model="opt"返回一个值。

我尝试添加名为opt的动态文本字段,为此我想在数组中获取opt值。 如果我使用PHP然后可以($option =$_POST['opt']),但是如何在AngularJS中获取opt的数组值。

1 个答案:

答案 0 :(得分:0)

您可以在控制器中定义选项,将其传递给视图,然后使用ng-repeat迭代您的选项。这样您就可以使用$index并将选项保存到数组中。以Plunker为例。

所以基本上你会对你的选项进行迭代,如上所述:

<div ng-repeat="option in vm.options">
  <input type="text" name="{{ option.name }}" ng-model="vm.opt[$index]" />

正如您所见,我使用ng-model这样:

ng-model="vm.opt[$index]"

这会将输入字段的值保存在$index位置的数组中,这与for循环中的迭代器非常相似,并以0开头。