2016-04-26 4 views
2

Das Array wie so strukturiert ist,Splicing Array innerhalb ng-repeat verschachtelt,

$scope.structure = { 
    sections: [{ 
     id:0, 
     sectionItems: [] 
    },{ 
     id:1, 
     sectionItems: [] 
    },{ 
     id:2, 
     sectionItems: [] 
    }] 
}; 

Ich habe eine verschachtelte ng-repeat, so kann ich ein Element innerhalb von sectionItems [] (innen zeigen sollte Objekte und einer der sein Schlüssel ist Name - nicht relevant)

<div ng-repeat="sections in structure.sections" class="col-md-12"> 
    <div class="panel panel-info"> 
    <ul class="screenW-section"> 
     <li class="col-xs-6" ng-repeat="item in sections.sectionItems" 
     ng-click="item.splice($index, 1)"> 
      {{item.Name}} 
     </li> 
    </ul> 
</div> </div> 

ich Elemente in der Lage sein wollen, klicken Sie einfach zu entfernen, aber die ng-click = "item.splice ($ index, 1) nicht funktioniert, egal wie Ich formatiere es.

+0

Alle Ihre Sachen funktioniert, Problem in einem anderen Teil ein Code war – CountGradsky

Antwort

3

versuchen Sie dies:

var app = angular.module("testApp", []); 
 
app.controller('testCtrl', function($scope){ 
 
    $scope.structure = { 
 
    sections: [{ 
 
     id:0, 
 
     sectionItems: ['1','2','3'] 
 
    },{ 
 
     id:1, 
 
     sectionItems: ['11','21','32'] 
 
    },{ 
 
     id:2, 
 
     sectionItems: ['12','22','32'] 
 
    }] 
 
}; 
 
    
 
    
 
    $scope.remove = function(sectionItems,index){ 
 
    sectionItems.splice(index, 1);  
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="testApp" ng-controller="testCtrl"> 
 

 
    <div ng-repeat="sections in structure.sections" class="col-md-12"> 
 
    <div class="panel panel-info"> 
 
    <ul class="screenW-section"> 
 
     <li class="col-xs-6" ng-repeat="item in sections.sectionItems" 
 
     ng-click="remove(sections.sectionItems,$index)"> 
 
      {{item}} 
 
     </li> 
 
    </ul> 
 
</div> </div> 
 

 
</div>

3

Um ein Element zu entfernen, müssen Sie es aus dem Array entfernen.
So zum Beispiel könnten Sie

ng-click="remove(sections.sectionItems, $index)" 

in der Ansicht tun, und

$scope.remove = function(array, index) { 
    array.splice(index, 1);  
} 

in der Steuerung ...

+1

„Abschnitte“ und „sectionItems“ sind Arrays und kann nicht auf diese Weise referenziert werden. – CountGradsky

+1

Da es geschachtelt ist, benötigen Sie den Index des Abschnitts und des AbschnittsItem. Mit anderen Worten, Sie benötigen einen Verweis auf den richtigen Abschnitt auch in Ihrer Antwort. – FajitaNachos

+1

@CountGradsky: * Sie * verwenden es als Objekte in der Ansicht, die Sie zeigen ... Bin ich falsch? – MarcoS

1

Du nennst Spleiß auf dem Punkt und nicht die Array

ng-click="sections.sectionItems.splice($index, 1)" 
+0

Ich bekomme "TypeError: Bereich. $ Eval (...). Spleiß ist keine Funktion" auf jede Lösung – CountGradsky