在表单中动态分配ng-bind

时间:2016-07-15 22:44:44

标签: angularjs dynamic binding

我有像这样的数据的JSON,遗憾的是我无法修复来自第三方的数据

$scope.mydata = {
  "SOB0": "7",
  "SOB1": "70",
  "SOB2": "790",
  ...
  ...
  "wb0": "7",
  "wb1": "17",
  "wb2": "8",
  ...
}

问题是JSON中收到的数据并不总是相同的,属性的数量,对于每种类型可能是一个或多个,即一个attr SOB0或多个SOB0,SOB1,SOB2 ..

在表单中,我希望根据JSON中的属性数量将此数据绑定到输入字段,例如,如果我只有三个类型" SOB"

{"SOB0": "7", "SOB1": "70","SOB2": "790"..}

input ng-model="mydata.SOB0" size=6 
input ng-model="mydata.SOB1" size=6 
input ng-model="mydata.SOB2" size=6

似乎无法像ng-model="mydata.SOB+$index"那样进行插值 或调用函数以基于JSON动态绑定。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:1)

您可以查看链接

https://plnkr.co/edit/ofd2UaDes4oaxxjj4PcU?p=preview

<div ng-repeat="a in states track by $index">
        <input type="text" value={{a}}>
        </div>

答案 1 :(得分:0)

在javascript中使用[]表示法来表示变量对象属性名称

<input ng-model="mydata[ 'SOB' + $index ]">

迭代mydata

<div ng-repeat="(key, val) in mydata">
    <input type="text" ng-model="mydata[key]">
</div>

答案 2 :(得分:0)

我会将所有输入值都放在像这样的$ scope dict中

//inside angular controller
$scope.values = {};

在html中:

<div ng-repeat="i in Object.Keys(mydata)"> 
    <input ng-model="values[i]">
</div>

Object.keys(object)将返回一个数组,其中包含给定对象的所有键,在本例中为变量&#39; i&#39;将是你的SOB键,所以所有输入将被绑定到一个动态字典,它将使用它们的键来引用输入的值