1

考虑:

$scope.taylor = {
    firstName: 'taylor',
    lastName: 'mcintyre',
    order: 22 
}

使用 $resource,我可能想保存这个:

people.save($scope.taylor);

但是,我不希望将属性“订单”与请求一起发送。

Angular 会忽略以 '$$' 为前缀的属性,因为它自己的内部使用,但以这种方式为我自己的隐藏属性添加前缀感觉不对,例如

$scope.taylor = {
    firstName: 'taylor',
    lastName: 'mcintyre',
    $$order: 22 
}

删除不需要的属性是常识性的解决方案,但 Angular 有更好的解决方案吗?

4

1 回答 1

3

我知道您正在寻找一种“角度方式”来排除键,但angular.copy()似乎不支持这一点。angular.toJson ()文档指出:Properties with leading $ characters will be stripped since angular uses this notation internally.这听起来像是 using$应该保留给 angular,而不是我们在我们的对象中使用。

鉴于这种情况,我创建了一个简单的 CodePen 示例,展示了使用UnderscoreJS之类的库可以轻松完成此操作。

我确信有更优雅的方法可以做到这一点,但我的例子确实实现了我理解的主要目标。

我在我的文件中包含了 UnderscoreJS 库并添加了以下代码:

var person = {
  firstName: 'John',
  lastName: 'Smith',
  order: 22,
  excludeKeys: [
    'order',
    'excludeKeys'
  ]
};

var personCopy = _.omit(person, person.excludeKeys);

console.log('person: ', person);
console.log('person copy: ', personCopy);

我希望这很有用。

于 2013-10-04T00:19:09.927 回答