Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何定义角度$scope上的隐藏属性_Angularjs - Fatal编程技术网

Angularjs 如何定义角度$scope上的隐藏属性

Angularjs 如何定义角度$scope上的隐藏属性,angularjs,Angularjs,考虑: $scope.taylor = { firstName: 'taylor', lastName: 'mcintyre', order: 22 } 使用$resource,我可能希望保存以下内容: people.save($scope.taylor); 但是,我不希望属性“order”与请求一起发送 Angular会忽略以“$$”为前缀的属性,以供其自身内部使用,但以这种方式为自己的隐藏属性添加前缀感觉不正确,例如 $scope.taylor = {

考虑:

$scope.taylor = {
    firstName: 'taylor',
    lastName: 'mcintyre',
    order: 22 
}
使用$resource,我可能希望保存以下内容:

people.save($scope.taylor);
但是,我不希望属性“order”与请求一起发送

Angular会忽略以“$$”为前缀的属性,以供其自身内部使用,但以这种方式为自己的隐藏属性添加前缀感觉不正确,例如

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

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

我知道您正在寻找一种“Angular方式”来排除关键点,但似乎不支持这一点。文档说明:
带有前导$字符的属性将被剥离,因为angular在内部使用此符号。
这听起来像是使用
$
应该保留给angular,而不是我们在对象中使用

鉴于这种情况,我创建了一个示例,展示了使用类似的库可以多么容易地完成这项工作

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

我在文件中包含了下划线JS库,并添加了以下代码:

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);

我希望这是有用的。

Ehh……我不这么认为……您可以通过数组定义要忽略的属性,然后将该函数的返回对象传递给服务\是的,我就是这么做的。这似乎是一个反复出现的问题。或者,更确切地说,这似乎是一个常见的问题。为什么要发送带有请求的作用域而不是存储在作用域中的对象?我正在发送存储在$scope$scope.taylor上的对象。我不发送$scope本身。也许我误解了您从angularjs 1.3.0开始,只有以$$字符开头的属性才会被点画。