Javascript AngularJS:如何创建一个模型来保存输入字段动态列表的数组?

Javascript AngularJS:如何创建一个模型来保存输入字段动态列表的数组?,javascript,arrays,json,angularjs,Javascript,Arrays,Json,Angularjs,我有一个非常有趣的问题(我希望)给你们安格拉斯大师。我希望创建一个基于选择下拉列表的表单输入字段的动态列表。例如,我们有许多类别,每个类别都有一组特定于该类别的规范。为了帮助解释,我们有以下内容: 首先,在控制器中,我们从初始化模型开始 $scope.category = {}; $scope.category.specs = []; 接下来,我们准备好表单中使用的数据(实际上是通过$http从服务器检索的)。我们还将变量初始化为categories数组中的第一个元素 $scope.categ

我有一个非常有趣的问题(我希望)给你们安格拉斯大师。我希望创建一个基于选择下拉列表的表单输入字段的动态列表。例如,我们有许多类别,每个类别都有一组特定于该类别的规范。为了帮助解释,我们有以下内容:

首先,在控制器中,我们从初始化模型开始

$scope.category = {};
$scope.category.specs = [];
接下来,我们准备好表单中使用的数据(实际上是通过$http从服务器检索的)。我们还将变量初始化为categories数组中的第一个元素

$scope.categories = [
  { "id": "1", "name": "mobile", specs: [ 
    { "id": "1", "label": "Operating System" }, 
    { "id": "2", "label": "Camera type" } ] },
  { "id": "2", "name": "laptop", specs: [ 
    { "id": "1", "label": "Operating System" },
    { "id": "2", "label": "Graphics Card" } ] }
};  
$scope.selectedCategory = $scope.categories[0];
在表单中,我们有一个下拉列表,选中该下拉列表后,将加载特定于该类别的适当输入字段。我们使用ngRepeat指令来实现这一点。这是基于$scope.categories.specs的字段动态列表。(请注意??)


不幸的是,我真的不知道如何做到这一点。我需要以某种方式为规范模型创建一个数组,然后确保ID和用户输入的数据都被正确提取。。。里面有什么???然后我们做什么?任何帮助都将不胜感激。

在控制器中,按如下方式初始化
$scope.specDetails

$scope.specDetails = {};
angular.forEach($scope.categories, function (category, index1) {
    $scope.specDetails[category.id] = {};
    angular.forEach(category.specs, function (spec, index2) {
        $scope.specDetails[category.id][spec.id] = '';
    });
});

在html中,将“?”替换为
specDetails[selectedCategory.id][spec.id]

我就是这样做的。我制作一个表单,用angular验证它,然后当它有效时,我用一个函数提交它

  <form name="signup_form" novalidate ng-submit="signupForm()"></form>


  $scope.signupForm = function() {
var data = $scope.signup;
$http({
  method  : 'POST',
  url     : 'http://yoursite.com/mail.php',
    data    : $.param(data), // pass in data as strings
    headers : { 'Content-Type': 'application/x-www-form-urlencoded' }  // set the headers so angular passing info as form data (not request payload)
  })
.success(function(data) {

});
}

$scope.signupForm=函数(){
var data=$scope.signup;
$http({
方法:“POST”,
网址:'http://yoursite.com/mail.php',
数据:$.param(数据),//以字符串形式传入数据
标题:{'Content Type':'application/x-www-form-urlencoded'}//将标题设置为将信息作为表单数据传递(而不是请求负载)
})
.成功(功能(数据){
});
}
此外,如果您想查看另一个表单验证系统进行角度检查,它可能会帮助您解决当前表单系统的问题

$scope.specDetails = {};
angular.forEach($scope.categories, function (category, index1) {
    $scope.specDetails[category.id] = {};
    angular.forEach(category.specs, function (spec, index2) {
        $scope.specDetails[category.id][spec.id] = '';
    });
});
  <form name="signup_form" novalidate ng-submit="signupForm()"></form>


  $scope.signupForm = function() {
var data = $scope.signup;
$http({
  method  : 'POST',
  url     : 'http://yoursite.com/mail.php',
    data    : $.param(data), // pass in data as strings
    headers : { 'Content-Type': 'application/x-www-form-urlencoded' }  // set the headers so angular passing info as form data (not request payload)
  })
.success(function(data) {

});
}