使用angularJS

时间:2015-08-26 13:36:17

标签: angularjs

我将自定义字段的数据设为

var data = [
            {type:"text",fieldName:"UserName",fieldValue:"bob"},
            {type:"text",fieldName:"password",fieldValue:"bob"}
           ]

问题是当我创建自定义字段时,我在ng-model创建自定义字段时如何使用ng-repeat

这是plunker

  

我不想仅绑定fieldValue,还想修改UserName和Password

     

数据是动态的。

备注

  

我想通过控制器将用户名和密码传递给服务器。

     

此处用户名密码标签只是一个示例,可能是电子邮件ID,电话号码或其他任何内容。

我希望数据为{UserName:"test",Password:"123456abcd"}

如果我有电子邮件ID字段名称,那么我的数据应该是控制器上的{Email : "abcd@xyz.com"}

所以我可以使用$ http将数据发送到服务器,如:

$http.post('myUrl',data).then(function(response){
           console.log(responce);
})

2 个答案:

答案 0 :(得分:2)

ng-model="c.fieldValue"

因为您希望使用数组的currend元素的fieldValue属性填充该字段:c(反之亦然)。

plunkr

当您提交表单时,只需遍历您的字段即可创建要提交的对象:

var command = {};
angular.forEach(data, function(field) {
    command[field.fieldName] = field.fieldValue;
});
$http.post('myUrl',command).then(function(response){
    console.log(response);
});

答案 1 :(得分:0)

我认为你需要使用的是括号表示法。它的工作原理如下:

 var objToSendToServer;
 objToSendToServer[c.fieldName] = c.fieldValue;

此链接的更多信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors#Bracket_notation

我认为最终的代码应该是这样的:

var objToSendToServer;
data.forEach(function(){
    objToSendToServer[c.fieldName] = c.fieldValue;
});