考虑:
$scope.taylor = {
firstName: 'taylor',
lastName: 'mcintyre',
order: 22
}
使用$ resource,我可能想保存它:
people.save($scope.taylor);
但是,我不希望将属性“order”与请求一起发送。
Angular会忽略以'$$'为前缀的属性,因为它有自己的内部用途,但它不会以这种方式为我自己的隐藏属性添加前缀,例如。
$scope.taylor = {
firstName: 'taylor',
lastName: 'mcintyre',
$$order: 22
}
删除不需要的属性是常识性解决方案,但Angular是否有更好的解决方案呢?
答案 0 :(得分:3)
我知道您正在寻找排除密钥的“Angular方式”,但angular.copy()似乎不支持这一点。 angular.toJson()文档指出:Properties with leading $ characters will be stripped since angular uses this notation internally.
这听起来像使用$
应保留为角度,而不是我们在对象中使用。
根据情况,我创建了一个simple CodePen example,显示了使用像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);
我希望这很有用。