角度:用角
问题描述:
这里删除的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)
答
尝试返回对象进行更改后,它即
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)
答
尝试使用
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)