2015-04-30 1 views
4

Fiddle ссылки, где мы можем добавить новые дочерние узлы, и их дочерний узел также может удалить дочерний узел формирование родителя ТОЛЬКО.Удалить текущий узел из списка: AngularJs

Я пытаюсь удалить весь дочерний узел и ТАКЖЕ текущий узел из той же кнопки удаления. (Все дочерние узлы удалены успешно, но я не могу удалить текущий узел из списка.)

Как я могу это сделать через Angular Js.

angular.module("myApp", []). 
controller("TreeController", ['$scope', function($scope) { 
    $scope.delete = function(data) { 
     data.nodes = []; 
    }; 
    $scope.add = function(data) { 
     var post = data.nodes.length + 1; 
     var newName = data.name + '-' + post; 
     data.nodes.push({name: newName,nodes: []}); 
    }; 
    $scope.tree = [{name: "Node", nodes: []}]; 
}]); 

Может ли кто-нибудь помочь.

+0

С текущей настройки функции, я не думаю, что вы можете .. Я могу ошибаться. – Billy

+0

Так есть ли другой способ? например, я могу переназначить $ scope.tree = $ scope.tree, удалив конкретный удаленный инициированный узел – user875123

+0

Также см. http://stackoverflow.com/a/14460332/123415 и http://jsfiddle.net/sunnycpp/KNM4q/110/ – jcuenod

ответ

2

Чтобы удалить текущий узел также, необходимо удалить его из родителя, поэтому вам нужно будет хранить ссылку на родительский узел в данных

data.nodes.push({name: newName,nodes: [], parent: data}); 

Тогда в Delete(), вы можете получить доступ к родительскому узлу и удалить себя:

$scope.delete = function(data) { 
    var index = data.parent.nodes.indexOf(data); 
    if(index > -1) { 
     data.parent.nodes.splice(index, 1); 
    } 
}; 

Обновлено jsfiddle

Смежные вопросы