Mam rekurencyjną tablicę w JS:angularjs - Jak uzyskać dostęp do tablicy wewnątrz zagnieżdżonej 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
}]
}]
jest on wyświetlany w angularjs użyciu NG-repeat rekurencyjnie z szablonem inline:
<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>
Wszystko działa poprawnie. Teraz chcę usunąć jeden element z wewnętrznej ng-repeat. Mogę uzyskać indeks elementu, który klikam (do usunięcia) z $ indeks, również obiekt cond jako parametr na ng-click. Mogę również dostęp $ rodzica ale wskazuje na korzeń przedmiotu ...
Jak uzyskać dostęp do wewnętrznej tablicy bez konieczności ręcznego przeszukiwania całej warunkach tablica rekurencyjnie? Dziwne, że można łatwo uzyskać dostęp do indeksu wewnętrznej tablicy, ale nie rzeczywistej instancji tablicy.
A jakakolwiek rada w tej sprawie? Dziękuję ..
EDIT 21/03/2016
Przed zaakceptowanej odpowiedzi, 'brute-force' wersja jest realizowany tak:
$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);
}
}
}
}
Mam nadzieję, że to pomoże innym z podobnym problemem.
Nie masz dostępu do niego jako cond.conditions.type, cond.conditions.conditionId? –
'$ parent. $ Parent' -' ngInclude' tworzy * inny * zakres pomiędzy powtórzeniem twojego rodzica a powtórzeniem twojego dziecka. – tymeJV
'$ parent. $ Parent' dał mi zasięg kontrolera, a więc ponownie root bazy. –