为什么我在 JSON.stringify(值,替换器)中的替换器函数在 Angular 应用程序中没有收到键
Why my replacer function in JSON.stringify(value, replacer) doesn't receive keys in Angular application?
尝试实现JSON.stringify,如下所述:隐藏JSON.stringify()输出中的某些值,并从序列化中排除某些字段,但它不起作用。
例如,在我的控制器中,我有以下代码:
.controller('ExampleController', ['$scope', function($scope) {
$scope.event = {
id:1,
title: 'event title',
users: [{
id: 1,
name: 'Anatoly'
},{
id: 2,
name: 'Roman'
}],
private1: 1,
private2: 2
};
var replacer = function(key, value){
console.log(key);
};
$scope.stringified1 = JSON.stringify($scope.event, replacer);
// $scope.stringified = JSON.stringify($scope.event, ['id','title','users','name']);
}]);
为什么console.log(key)
什么都不打印?函数本身被调用,但key
参数为空。
我在这里做了 plunker:http://plnkr.co/edit/U6ZcIuPVr5RzMIBl8X6c?p=preview
我正在使用 Angular 1.4.9 和 Chrome 48.0.2564.116
附言我已经使用传递数组完成了此功能并且它有效,但是使用函数可以提供更大的灵活性,因此我想了解为什么它不起作用。
好的,这里的手动不清楚: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify 但是因为replacer
以递归方式调用的,所以它应该返回调用它的对象,根对象本身也是如此:
你应该返回这个对象,最初,它被调用时有一个表示对象的空键 被串化
如果你不返回任何内容,它不会在这个对象的其他属性上被调用
然后为对象或数组上的每个属性调用它 被串化
所以,多亏@charlietfl提示,我修复了它,你可以在这里看到固定的 plunker:http://plnkr.co/edit/a3S8yGx78b7vJSKwORw5?p=preview
相关文章:
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- angular 1.5应用程序中的导航栏
- 在Web应用程序中使用Highcharts javascript
- angularjs+rails应用程序中未显示模板
- 如何在 Sails.js 应用程序中禁用或替换 X-Powered-By 标头
- 为什么我在 JSON.stringify(值,替换器)中的替换器函数在 Angular 应用程序中没有收到键
- 在应用程序级别替换主干同步 - 而不是通过模型或 Xollection
- 如何用谷歌应用程序脚本替换电子表格中的文本
- 在asp.net web应用程序中使用jQuery表替换GridView
- Web应用程序安全:JavaScript代码和数据的替换
- node.js/express应用程序-使用哪个异步方法来替换我对HGET的嵌套调用
- API/应用程序设计:用新数组替换非常大的数组或修改现有数组
- 谷歌应用程序脚本——用卷曲的引号替换直引号
- 如何访问/替换Chrome应用程序中的iframe
- 我将$scope替换为一个变量,现在我的angular应用程序不能工作了
- 用于调用外部应用程序的NPAPI替换(本机消息传递主机)无法工作