2015-10-15 35 views
0

我有这个objectAngularjs - 'NG-model`在多维数组

[{ 
    '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表单中的对象?

更新:

我设法让我的所有元素展现出来:

<!--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这样的第二个索引或其他替代方法来做到这一点?

+0

你可以提供一个笨蛋,因为一切对我来说都很好...... –

+0

当你说全部变得动态时,我不明白。请更具体。关于访问元素,如果要访问每个成员,可以使用ng-model =“mainelement [0]”和ng-model =“mainelement [1]”。 –

+0

另外请注意,使用ngShow和ngHide指令以及3ngRepeats中的很多内容会严重影响角度应用程序的性能。 –

回答

2

所以你有一个小节的数组,并在另一个mainelements数组内。

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

并且在您的视图中,您还可以按ng-repeat中的索引访问数组项。 只需使用audit.subsections[$index].subsection而不是subsection.subsectionmainelements[$index]而不是mainelement来绑定到您的模型。 不知道你的意思是“通过动态获取所有ng-model”,但我希望这会让你走。

+0

请看看我的更新。 – sooon

+0

您仍然可以使用'mainelements [$ index]'作为$ index总是指您当前的循环。阅读更多关于它[这里](https://docs.angularjs.org/api/ng/directive/ngRepeat )。如果答案正确,请接受此答案(帮助他人) –