ng-repeat在ng-repeat $ index中

时间:2017-05-15 08:11:30

标签: javascript angularjs

嗨,这是我第一次来到这里,我是Angularjs的新手,如果有人在这里帮我解决问题,我会很感激。我已经嵌套了ng serve --base-href /assessment/ --deploy-url /assessment/(用户可能有多个comptes,compte也可能有多个mandats,当我点击ng-repeat时,它会添加一个AddMandatItem,使用{{1}添加但是,当我第二次单击<div>时(在另一个compte上),它会添加2个项目(第一个添加在+第二个之前)。我可以参考父compte以便我的<ng-repeat>为每个compte添加我想要添加的mandats数量?

AddMandatItem

app.js:

<ng-repeat>

3 个答案:

答案 0 :(得分:0)

您可以使用某些变量作为索引,您可以使用。有关详细信息,请参阅AngularJS Documentation

<button ng-click="addCompteItem()">Add a compte</button>
<div ng-repeat="compteItem in compteItems" ng-init="parentIndex = $index">
  <h2>
   <strong>Compte {{parentIndex + 1}}</strong>
  </h2>
  <label>Id</label>
  <input type="text" ng-model="compte[parentIndex].id" />
  <label>Unique reference</label>
  <input type="text" ng-model="compte[parentIndex].uniqueRef" />


  <div ng-repeat="mandat in compte[parentIndex].mandat" ng-init="childIndex = $index">
  <label>Id</label>
  <input ng-model="compte[parentIndex].mandat[childIndex].id" />

<div>
<button ng-click="addMandatItem(parentIndex,childIndex)">Add a mandat for          that compte
</button>
 </div>

答案 1 :(得分:0)

根据您的要求,我相信你想做这样的事情:

HTML:

<button ng-click="addCompteItem()">Add a compte</button>
    <div ng-repeat="compteItem in compteItems track by $index">
      <h2>
       <strong>Compte {{$index + 1}}</strong>
      </h2>
      <label>Id</label>
      <input type="text" ng-model="compteItem.id" />
      <label>Unique reference</label>
      <input type="text" ng-model="compteItem.uniqueRef" />


      <div ng-repeat="mandat in compteItem.mandats track by $index">
      <label>Id</label>
      <input ng-model="mandat.id" />

    <div>
    <button ng-click="addMandatItem(compteItem)">Add a mandat for that compte
    </button>
     </div>

<强> JS:

$scope.compteItems = [{}];
    $scope.addCompteItem = function(){
        $scope.compteItems.push({mandats:[]});
    };

    $scope.addMandat = function(compteItem){           
            var newMandat = {};
            compteItem.mandats.push(newMandat);
    };

答案 2 :(得分:0)

我找到了这个解决方案,我分享它来帮助其他人遇到同样的问题:这是我的App.js

$scope.addMandat = function(i){
        if($scope.compteItems[i].mandats==null){
            $scope.compteItems[i].mandats=[];
        }
        console.log(i);
        var newMandat = {};
        $scope.compteItems[i].mandats.push(newMandat);
};

并且:

<button ng-click="addCompteItem()">Add a compte</button>

<div ng-repeat="compte in compteItems" ng-init="parentIndex = $index">
  <h2>
   <strong>Compte {{parentIndex + 1}}</strong>
  </h2>
  <label>Id</label>
  <input type="text" ng-model="compte[parentIndex].id" />
  <label>Unique reference</label>
  <input type="text" ng-model="compte[parentIndex].uniqueRef" />


  <div ng-repeat="mandat in compte.mandats" ng-init="childIndex = $index">
  <label>Id</label>
  <input ng-model="compte.mandat[childIndex].id" />
  </div>
  <div>
  <button ng-click="addMandatItem(parentIndex)">Add a mandat for that compte
  </button>
 </div>
 </div>