2016-04-05 15 views
1

İki sorunu çözmeye çalışıyorum (bunlardan biri gerçekten bir sorun olmasa bile).ng-repeater multi-level değerlerini dönüştürme

$scope.convert = function (id){ 
    switch (id) { 
    case "1": 
     $scope.role = "role 1" 
    break; 
    case "2": 
     $scope.role = "role 2" 
    break; 
    case "3": 
     $scope.role = "role 3" 
    break; 
    case "4": 
     $scope.role = "role 4" 
    break; 
    } 
} 
: Ayrıca parametre olarak kimliğini kullanarak, erle dönüştürmek gerekir

{"id": "1","details": [{"name": "Name 1","surname": "Surname 1"}]}, 
{"id": "2","details": [{"name": "Name 2","surname": "Surname 2"}]}, 
{"id": "3","details": [{"name": "Name 3","surname": "Surname 3"}]}, 
{"id": "4","details": [{"name": "Name 4","surname": "Surname 4"}]} 

:

Böyle hoş çok görünen nesneleri iki seviyeli bir dizi çukur yineleme bilgisi sorular burada

<h3>Works - with nested repeaters</h3> 
<ul ng-repeat="i in items" ng-click="convert('{{i.id}}')"> 
    <ul ng-repeat="a in i.details"> 
     {{a.name}} 
    </ul> 
</ul> 
<br/> 
{{role}} 

Ve: Artık

, html, bu şu anda ne var:

  • başka ng-repeat içindeki ng-repeat kullanarak iş yapar biliyorum, ama bu durum bu tür işlemek için en iyi yol olmadığını düşünüyorum. Ayrıca, ng-repeat-start/end'u da denedim, ama nasıl olduğunu anlayamadım, sanki orada olsaydı bile bu ucun bulunmadığını söyleyen bir hata var.

  • Dönüştürme işlevini çağırmak için adı tıklarsam, çalışır, ancak işlevi bu {{ convert ('{{a.id}}') }} gibi tekrarlayıcıya çağırmaya çalışırsam başarısız olur. İhtiyacım olan tek şey, adil olmak gerekirse, ID’ye dönüştürülmüş dizgeyi doğrudan tekrarlayıcıya gösterebilmek. (Ne yazık ki json dosyasını değiştiremem). İşte

ben yukarıda açıklanan budur: Sen olarak sevdiği dönüştürme yöntemini değiştirmek gerekir http://codepen.io/anon/pen/YqXBqN?editors=1010

+0

ı '{{convert (a.id)}} 'için çalıştığınızı düşünüyorum çünkü {{convert ('{{a.id}}')}} 'ifadesini kullanacağım * işlevi, '' {{a.id}} '' işleviyle dize olarak – kiro112

+0

olarak id olarak kullanıyorum. – Nick

+0

BTW olarak bile, biz hala burada almaya çalışıyoruz? * 1 - İsim 1 - rol 1 * çıktı gibi? – Nick

cevap

1

ng-click="convert('{{i.id}}')" yerine id olarak model bir role değişken değeri eklenti çekici bir bildirmek ng-click="convert(i.id)"

dönüştürülmesi gerekir hata sözdizimi önemlidir

$scope.addRole = function (model){ 
    var id = '' + model.id; 
    switch (id) { 
     case "1": 
      model.role = 'role 1'; 
      break; 
     case "2": 
      model.role = 'role 2'; 
      break; 
     case "3": 
      model.role = 'role 3'; 
      break; 
     case "4": 
      model.role = 'role 4'; 
      break; 
    } 
} 

html

<ul ng-repeat="i in items"> 
    {{addRole(i)}} 
    {{i.id}} - {{i.role}} 
</ul> 
2

-

$scope.convert = function (id){ 
    switch (id) { 
     case "1": 
     return "role 1" 
     break; 
     case "2": 
     return "role 2" 
     break; 
     case "3": 
     return "role 3" 
     break; 
     case "4": 
     return "role 4" 
     break; 
     } 

    } 

sonra yapıldığı haliyle Html'nizi güncellemek

<ul ng-repeat="i in items" ng-click="convert('{{i.id}}')"> 
     <ul ng-repeat="a in i.details"> 
     {{i.id}} - {{a.name}}- {{convert(i.id)}} 

     </ul> 
    </ul> 

Çıktısı,

1- Name 1 -role 1 
2- Name 2 -role 2 
3- Name 3 -role 3 
4- Name 4 -role 4 
+0

Bu çalışır, teşekkürler. Diğer soruyla ne ilgisi var? Başka bir ng-tekrarda ng-repeat kullanma? Bunu nasıl geliştirebilirim hakkındaki herhangi bir öneriniz var mı? – Nick

+0

@Nick bunu görecek ve bilirsin, eğer böyle şeyler yapmak için başka bir yol bulursam. Teşekkürler –