ho una serie ricorsiva in js:AngularJS - Come accedere una matrice all'interno di una nidificato ng-repeat
[{
type: 'cond',
conditionId: 1,
conditions: undefined
},
{
type: 'cond',
conditionId: 2,
conditions: undefined
},
{
type: 'group',
conditionId: undefined,
conditions: [{
type: 'cond',
conditionId: 3,
conditions: undefined
},
{
type: 'cond',
conditionId: 4,
conditions: undefined
}]
}]
visualizzare nel AngularJS utilizzando ng-repeat ricorsivamente con il modello in linea:
<script type="text/ng-template" id="recursive_template.html">
<div> some logic </div>
<div ng-repeat="cond in cond.conditions" ng-include="'recursive_template.html'"></div>
<div> some more logic </div>
</script>
<div ng-controller="EditRulesController">
<div ng-repeat="cond in conditions" ng-include="'recursive_template.html'" class="row">
</div>
</div>
Tutto funziona bene. Ora voglio eliminare un elemento dall'interno ng-repeat. Posso ottenere l'indice dell'elemento su cui clicco (per eliminare) con $ indice, anche l'oggetto cond come parametro su ng-click. Posso anche accedere $ genitore ma punta alla radice dell'oggetto ...
Come accedere alla matrice interiore senza manualmente la ricerca in tutto il condizioni serie in modo ricorsivo? È strano che tu possa facilmente accedere all'indice dell'array interno ma non all'istanza dell'array reale.
E qualche consiglio su questo problema? Grazie ..
EDIT 21/03/2016
Prima la risposta accettata, la versione 'forza bruta' è implementata in questo modo:
$scope.deleteConditionClick = function (id) {
deleteCondition($scope.conditions, id);
};
function deleteCondition(conditions, id) {
var conds = conditions;
if (conds) {
for (var i = 0; i < conds.length; i++) {
if (conds[i].type === 'cond') {
if (conds[i].conditionId === id) {
conds.splice(i, 1);
return true;
}
} else if (conds[i].type === 'group') {
deleteCondition(conds[i].conditions, id);
}
}
}
}
spero che aiutare gli altri con problemi simili.
Non riesci ad accedervi come cond.conditions.type, cond.conditions.conditionId? –
'$ parent. $ Parent' -' ngInclude' sta creando * un altro * ambito tra la ripetizione del genitore e la ripetizione del bambino. – tymeJV
'$ parent. $ Parent' mi ha dato l'ambito del controller, quindi di nuovo la radice dell'array. –