【问题标题】:Dynamically assign ng-bind in form在表单中动态分配 ng-bind
【发布时间】:2016-11-19 05:55:11
【问题描述】:

我有像这样的数据的 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 动态绑定。

任何帮助将不胜感激。

【问题讨论】:

    标签: angularjs dynamic binding


    【解决方案1】:

    您可以查看链接

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

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

    【讨论】:

    • 感谢您的帮助,但是这两种方式绑定似乎不起作用。
    • 那是因为我没有将 ng-model 添加到输入元素
    【解决方案2】:

    我会将我所有的输入值放在这样的 $scope 字典中

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

    在html中:

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

    Object.keys(object) 将返回一个包含给定对象的所有键的数组,在这种情况下,变量“i”将是您的 SOB 键,因此所有输入都将绑定到一个动态字典,该字典将使用他们的键来引用输入的值

    【讨论】:

    【解决方案3】:

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

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

    迭代mydata

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-23
      • 2012-12-20
      • 1970-01-01
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多