2017-02-27 119 views
0

这里删除的obj的某些属性是我的数据:角度:用角

$scope.datas = { 
     "name": "000", 
     "id" : 1, 
     "type" : "record" 
     "children": [ 
     {name:111,id:2,children:[ 
      {name:444,id:5,children:[]} 
     ]} 
     {name:222,id:3,children:[]} 
     {name:333,id:4,children:[]} 
     ] 
    } 

,这是我删除功能:

deleteNode = (node,id) -> 
    if node.id == id 
     $timeout -> 
     console.log 'findNode',node 
     node = null 
     return 
    if node.children 
     for rows,i in node.children 
     if rows.id == id 
      $timeout -> 
      console.log 'findNode',rows 
      rows = null 
     else 
      deleteNode(rows,id) 

我需要找到指定的ID在我$scope.datas

后,我执行该功能deleteNode($scope.datas,5)

它找到正确的OBJ确实,但$scope.datas没有改变,为什么呢?

找到了答案,我改变deleteNode功能自爆

deleteNode = (node,id) -> 
    if node.id == id 
     $timeout -> 
     node = {} 
     return 
    if node.children 
     for rows,i in node.children 
     if rows.id == id 
      node.children.splice(i,1) 
      return 
     else 
      deleteNode(rows,id) 

回答

0

尝试返回对象进行更改后,它即

deleteNode = (node,id) -> 
    if node.id == id 
     $timeout -> 
     console.log 'findNode',node 
     node = null 
     // return the node 
     return node; 
    if node.children 
     for rows,i in node.children 
     if rows.id == id 
      $timeout -> 
      console.log 'findNode',rows 
      rows = null 
      // return the node 
      return node; 
     else 
      deleteNode(rows,id) 
0

尝试使用

deleteNode = (node,id) -> 
if node.id == id 
    $timeout -> 
    console.log 'findNode',node 
    node = null 
    $timeout(angular.noop) 
    return 
if node.children 
    for rows,i in node.children 
    if rows.id == id 
     $timeout -> 
     console.log 'findNode',rows 
     rows = null 
     $timeout(angular.noop) 
    else 
     deleteNode(rows,id)