2015-01-21 16 views
5

Nesne listesi içeren bir dizim var. Her nesne ayrıca bir dizi içerir (aşağıya bakınız). Her nesne için çocuk dizisi boyunca yinelemek için ng-repeat kullanıyorum, farklı bir şekilde denedim, ama sadece işe yaramıyor. Herhangi bir ipucu, yön, yardım büyük takdir edilecektir. Teşekkür ederim. :-)Nesnelerin içindeki diziye erişmek için ng-tekrarı

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.js"></script> 
<script> 
    angular.module('mlApp', []) 
     .controller('mlCtrl', [function() { 
      var self = this; 
      self.contacts = [ 
      { contact: 'AAA', mlist: [1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1] }, 
      { contact: 'BBB', mlist: [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1,1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1] } 

      ]; 
} ]); 

<div ng-app="mlApp" ng-controller="mlCtrl as mCtrl"> 
<table> 
<thead>..</thead> 
<tbody> 
    <tr ng-repeat="p in mCtrl.contacts"> 
     <th width="100px" >{{p.contact}}</th> 
     <td ng-repeat="c1 in p.mlist"><input type="checkbox" ng-check='{{c1}}' /></td> 
    </tr> 

</tbody> 
</table> 
</div> 

cevap

11

ipucu errors için konsol kontrol etmektir - Açısal (genellikle) böyle şeylerle çok yararlıdır.

İç ng-yinelemede kullandığınız dizinizde yinelenen değerleriniz vardır, bu nedenle bir şeyleri izlemeniz gerekir. Ben bu örnekte $ endeksi kullandı: Bunu yapmadan böyle

angular.module('mlApp', []) 
 
    .controller('mlCtrl', [ 
 
    function() { 
 
     var self = this; 
 
     self.contacts = [{ 
 
      contact: 'AAA', 
 
      mlist: [1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1] 
 
     }, { 
 
      contact: 'BBB', 
 
      mlist: [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1] 
 
     } 
 

 
     ]; 
 
    } 
 
    ]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="mlApp" ng-controller="mlCtrl as mCtrl"> 
 
    <table> 
 
    <thead>..</thead> 
 
    <tbody> 
 
     <tr ng-repeat="p in mCtrl.contacts"> 
 
     <th width="100px">{{p.contact}}</th> 
 
     <td ng-repeat="c1 in p.mlist track by $index"> 
 
      <input type="checkbox" ng-check='{{c1}}' /> 
 
     </td> 
 
     </tr> 
 

 
    </tbody> 
 
    </table> 
 
</div>

+0

Erkeksin !!! Çok teşekkür ederim. Bu işe yarıyor! –

+0

Çalışması gerekiyor! Rica ederim. :) Ve Taşma Yığınına hoş geldiniz! – Shomz

+1

NIce cevap. @GeorgeHuang ama neden bu onay kutusunu işaretlemediğini ve işaretlediğinizde veya işaretini kaldırdığınızda değerleri güncellemediğini merak ediyorsanız? ' 'ng-model 'ng-true/false-value' kullanmanız gerekir, böylece ng-modeli buna göre ayarlanır ve ng-checked yalnızca hatayı düzeltmek için truevalue/falsevalue, dizgenin tam sayı olup olmadığını bilmiyor. – PSL

0

aynı:

var myApp = angular.module('myApp',[]); 
 

 
myApp.controller('mycontroller',['$scope',function($scope){ 
 
    
 
    $scope.students=[]; 
 
    var i=0; 
 
    for(i=0;i<5;i++){ 
 
    var item={Name:'',Marks:[]}; 
 
    
 
    item.Name='student' + i; 
 
    item.Marks.push({Maths:50-i,Science:50 +i}); 
 
    
 
    $scope.students.push(item); 
 
    } 
 

 
}]);
<html ng-app='myApp'> 
 
    <head> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js"></script> 
 
</head> 
 
    <body ng-controller='mycontroller'> 
 
    <div ng-repeat='student in students'> 
 
     Name : {{student.Name}} 
 
     <span ng-repeat="m in student.Marks">Maths:{{m.Maths}} Science:{{m.Science}}</span> 
 
     </div> 
 
    </body> 
 
</html>

İlgili konular