【发布时间】:2013-12-17 01:54:25
【问题描述】:
我知道如何使用 $parse 服务设置对象的“深度”属性,例如在 this post 中。
但是如何删除深层属性?不要将其分配给null:
$parse('very.very.deep.property').assign($scope, null);
,但实际上删除它,就像我们在 JavaScript 中那样:
delete $scope.very.very.deep.property;
【问题讨论】:
-
当然
delete $parse('very.very.deep.property')应该可以工作 -
@charlietfl 不,我认为
delete $parse('very.very.deep.property').assign($scope)会起作用,但它只会将property设置为undefined:jsfiddle.net/cherniv/2Evxq -
所以我很好奇为什么你不能使用
delete $scope.very.very.deep.property;,因为那确实留下了deep作为空对象而hasOwnProperty('property')是假的 -
@charlietfl 因为这部分:
very.very.deep.property作为来自服务器的字符串来到我这里.. 最后它被转换为 XML 节点并且是一个大型 XML 结构的一部分 -
好的...那么您是否必须递归循环遍历 xml 的深层节点?如果是这样,而循环通过 mabe 可以继续添加
[nodeName]然后[nodeName][childNodeName]到每个级别的范围?
标签: javascript angularjs object angularjs-scope angularjs-service