AngularJS-深层对象'属性删除

AngularJS - Deep object' property deletion

本文关键字:属性 删除 对象 AngularJS-      更新时间:2023-12-26

我知道如何使用$parse服务设置对象的"deep"属性,就像在这篇文章中一样。

但是如何删除深层属性?不将其分配给具有以下内容的null

$parse('very.very.deep.property').assign($scope, null);

,但实际上删除它,就像我们在JavaScript:中做的那样

delete $scope.very.very.deep.property;

恐怕您所寻找的没有Angular服务/函数。但是您仍然可以实现以下内容来满足您的需求:

function Ctrl($scope,$parse){
  var path = 'very.very.deep.property';
  var partials = path.split('.');
  var deepKey = partials.pop(); //Extract the key name from your path
  var deepPath = partials.join('.'); //Build the parent's path
  var deep = $parse(deepPath);
  var prop = $parse(path);
  prop.assign($scope, "I'm so deep");
  delete deep($scope)[deepKey]; //Evaluate the deep path against your scope and delete the key
  console.log(deepKey, $scope.very.very.deep)
}

这里有小提琴。希望这能派上用场。