Angularjs - 多维数组中的`ng-model`

时间:2015-10-15 07:18:25

标签: javascript arrays json angularjs

我有object

[{
  'name': '2015',
  'section': '001',
  'subsections': [{
    subsection:'aa',
    mainelements: ['cc','dd']
    },{
    subsection:'bb',
    mainelements: ['ee','ff']
    }]
}]

我可以在html

中显示它们
  <body>
    <button ng-click="new()">New</button>
    <ul>
        <li ng-repeat="audit in audits">
          <span ng-hide="editing"><h5>{{audit.name}}</h5></span></br>
          <input ng-show="editing" type="text" ng-model="audit.name"  size="30" placeholder="add name here"></br>
          <span ng-hide="editing">{{audit.section}}</span></br>
          <input ng-show="editing" type="text" ng-model="audit.section"  size="30" placeholder="add section here"></br>
          <ul>
              <li ng-repeat="subsection in audit.subsections">
                  <span ng-hide="editing">{{subsection.subsection}}</span></br>
                  <input ng-show="editing" type="text" ng-model="subsection.subsection"  size="30" placeholder="add subsection here"></br>
                  <ul>
                        <li ng-repeat="mainelement in subsection.mainelements">
                          <span ng-hide="editing">{{mainelement}}</span></br>
                            <input ng-show="editing" type="text" ng-model="mainelement"  size="30" placeholder="add mainelement here"></br>
                        </li>
                  </ul>
              </li>
          </ul>
          <div id="buttons">
            <button type="button" ng-hide="editing" ng-click="editing = true">Edit</button>
            <button type="button" ng-show="editing" ng-click="editing = false">Save</button>
          </div>
        </li>
      </ul>
  </body>

但问题是,我需要所有ng-model都是动态的,以便我可以单独编辑它们。在这种情况下,只有audit.nameaudit.section是动态的。但subsection.subsectionmain element不是。

当我这样做时:

$scope.logging = function(i) {
        var editaudit = $scope.audits[i];
        console.log(editaudit.name);
        console.log(editaudit.section);
        console.log(editaudit.subsections);
        console.log(editaudit.subsections.mainelements);
    }

得到这个

[Log] 2015
[Log] market map
[Log] [{subsection: "aa", mainelements: ["cc", "dd"], $$hashKey: "object:9"}, {subsection: "bb", mainelements: ["ee", "ff"], $$hashKey: "object:10"}]
[Log] undefined
  1. 我可以让所有ng-model变得充满活力吗?
  2. 如何以mainelement形式访问Key-value这是一个对象?
  3. 更新

    我设法让所有元素显示出来:

    <!--Html -->
    <ul>
                  <li class="bitcard" ng-repeat="subsection in audit.subsections">
                      <span ng-hide="editing">{{audit.subsections[$index].subsection}}</span></br>
                      <input ng-show="editing" type="text" ng-model="audit.subsections[$index].subsection"  size="30" placeholder="add subsection here"></br>
                      <ul>
                            <li class="bitcard" ng-repeat="mainelements in audit.subsections[$index].mainelements">
                              <span ng-hide="editing">{{mainelements}}</span></br>
                                <input ng-show="editing" type="text" ng-model="mainelements"  size="30" placeholder="add mainelement here"></br>
                            </li>
                      </ul>
                  </li>
              </ul>
    

    但现在问题是ng-model="mainelements"在第5行的最后一行并不是唯一的。有没有办法让第二个索引像$index02或其他替代方法来做到这一点?

1 个答案:

答案 0 :(得分:2)

所以你有一个子部分数组,并且在另一个mainelements数组中。

因此,您需要使用有效索引访问每个项目。 因此,console.log(editaudit.subsections.mainelements);注销undefined。将其更改为console.log(editaudit.subsections[index].mainelements);

在您的视图中,您还可以在ng-repeat内按索引访问数组项。 只需使用audit.subsections[$index].subsection代替subsection.subsectionmainelements[$index]代替mainelement即可绑定到您的模型。 不确定你的意思是&#34;通过动态&#34;得到所有ng-model。但是我希望这能帮到你。