2016-05-11 8 views
2

Ich habe einige Probleme mit ng-Wiederholung, wenn ich nur ein Element habe. nur (Hinweis:Angular kämpft mit ng-repeat

hier einiger Teil Code in meinem Controller:

Data.get('company').then(function(data){ 
     $scope.subDomains = data; 
    }); 

hier meine html ist, bevor der Code ausgeführt wird:

<div id="subdomains"> 
    <ul> 
     <li style="margin: 5px;" ng-repeat="sub in subDomains">{{sub.subdomain}} : <button type="button" class="btn btn-mav" ng-click="removeAccount(sub.subdomain);">Remove</button></li> 
    </ul> 
</div> 

hier ist mein html nach dem Code ausgeführt eine li hat eine Sub-Domain), die so nur ich ein li

<div id="subdomains"> 
<ul> 
<!-- ngRepeat: sub in subDomains --> 

<li style="margin: 5px;" ng-repeat="sub in subDomains" class="ng-binding ng-scope"> : <button type="button" class="btn btn-mav" ng-click="removeAccount(sub.subdomain);">Remove</button></li> 
<!-- end ngRepeat: sub in subDomains --> 

<li style="margin: 5px;" ng-repeat="sub in subDomains" class="ng-binding ng-scope">jason : <button type="button" class="btn btn-mav" ng-click="removeAccount(sub.subdomain);">Remove</button></li> 
<!-- end ngRepeat: sub in subDomains --> 

<li style="margin: 5px;" ng-repeat="sub in subDomains" class="ng-binding ng-scope"> : <button type="button" class="btn btn-mav" ng-click="removeAccount(sub.subdomain);">Remove</button></li> 
<!-- end ngRepeat: sub in subDomains --> 

<li style="margin: 5px;" ng-repeat="sub in subDomains" class="ng-binding ng-scope"> : <button type="button" class="btn btn-mav" ng-click="removeAccount(sub.subdomain);">Remove</button></li> 
<!-- end ngRepeat: sub in subDomains --> 

<li style="margin: 5px;" ng-repeat="sub in subDomains" class="ng-binding ng-scope"> : <button type="button" class="btn btn-mav" ng-click="removeAccount(sub.subdomain);">Remove</button></li> 
<!-- end ngRepeat: sub in subDomains --> 
</ul> 
</div> 

hier ist das Konsolenprotokoll angezeigt werden soll:

Object {apiversion: "2", data: Object, event: Object, func: "listsubdomains", module: "SubDomain"} 
    apiversion:"2" 
    data:Object 
     basedir:"public_html" 
     dir:"/home/XXXXX/public_html" 
     domain:"jason.XXXXX.com" 
     domainkey:"jason_XXXXX.com" 
     reldir:"home:public_html" 
     rootdomain:"XXXXX.com" 
     status:"not redirected" 
     subdomain:"jason" 

Ich versuche nur die Subdomains aufzulisten. Wenn ich mehr als eins habe, funktioniert es perfekt, aber wenn ich nur eins habe, bekomme ich die Ergebnisse, die ich gepostet habe.

+0

Ihr Backend gibt ein Objekt zurück, wenn nur ein Ergebnis vorhanden ist, und ein Array von Objekten, wenn mehrere Objekte vorhanden sind. – Kyle

Antwort

1

try folgenden

Data.get('company').then(function(data){ 
    if(angular.isArray(data)) 
     $scope.subDomains = data; 
    else 
     $scope.subDomains = [data]; 

}); 

Hoffnung diese Hilfe

+0

Danke @jahirul das hat perfekt funktioniert – Jason

2

Wenn Sie ng-repat="sub in subDomains" und Subdomains ein Objekt ist, dann werden Sie für jeden object member eine Wiederholung haben. Stellen Sie sicher, dass Ihr subDomains immer ein Array ist, auch wenn nur ein oder keine Elemente vorhanden sind.