我今天更新了我的Xcode并在iOs9版本上运行我的Ionic应用程序。每次从ng-repeat列表单击到详细视图时,Xcode控制台上都会弹出新错误。错误是:
error JSON.stringify()ing argument: TypeError: JSON.stringify cannot serialize cyclic structures.
错误似乎是由AngularFire firebaseObject引起的。以下是如何复制问题(必须构建到ios并在xcode7中查看错误):
通过运行:
使用Ionic starter sidemen模板$ sudo npm install -g ionic cordova
$ ionic start myApp sidemenu
修改PlaylistsCtrl和PlaylistCtrl,如下所示:
.controller('PlaylistsCtrl', function($scope, $firebaseObject, $firebaseArray) {
$scope.playlists = [];
var ref = new Firebase(MYFIREBASEURL);
var tasks = $firebaseArray(ref.child('tasks'));
$scope.playlists = tasks;
})
.controller('PlaylistCtrl', function($scope, $stateParams, $firebaseObject) {
var id = $stateParams.playlistId;
console.log(id);
var ref = new Firebase(MYFIREBASEURL);
var task = $firebaseObject(ref.child('tasks').child(id));
console.log(task);
$scope.task = task;
});

修改2个视图:启动器模板附带的播放列表和播放列表,如下所示:
<ion-view view-title="Playlists">
<ion-content>
<ion-list>
<ion-item ng-repeat="playlist in playlists" href="#/app/playlists/{{playlist.$id}}">
{{playlist.$id}} / {{playlist.title}}
</ion-item>
<ion-item class="item-text-wrap">{{task.title}} / {{task.$id}}</ion-item>
</ion-list>
</ion-content>
</ion-view>
<ion-view view-title="Playlist">
<ion-content>
<h1>{{task.$id}}</h1>
<p>{{task.title}}</p>
</ion-content>
</ion-view>
&#13;
通过运行$ ionic build ios构建sidemenu starter app,然后在xcode7中打开xcode文件。在ACTUAL DEVICE上运行 - 就像iPhone 5S(我的设备)一样。请在xcode日志窗口中注意。
单击列表项并转到详细播放列表视图时,会抛出错误
2015-09-29 10:20:03.868 firebaseObjerr [572:142668]错误JSON.stringify()ing参数:TypeError:JSON.stringify无法序列化循环结构。
并在此处添加了ios9修补程序:enter link description here 没有解决问题。 请帮忙!
[编辑]
这是我的系统信息(作为Ionic,Cordova是最新的):
Your system information:
Cordova CLI: 5.3.3
Gulp version: CLI version 3.9.0
Gulp local:
Ionic Version: 1.1.0
Ionic CLI Version: 1.6.4
Ionic App Lib Version: 0.3.8
ios-deploy version: 1.7.0
ios-sim version: 5.0.1
OS: Mac OS X Yosemite
Node Version: v0.12.5
Xcode version: Xcode 7.0 Build version 7A220
对于firebase和AngularFire,我从firebase CDN中获取它:
<!-- Firebase -->
<script src="https://cdn.firebase.com/js/client/2.2.4/firebase.js"></script>
<!-- AngularFire -->
<script src="https://cdn.firebase.com/libs/angularfire/1.1.2/angularfire.min.js"></script>
答案 0 :(得分:3)
我有类似的问题。事实证明它是在以下情况中引起的:
var userRef = new Firebase(FIREBASE_URL + '/users').child(uid);
profile = $firebaseObject(userRef);
console.log(profile)
您是否有可能尝试记录具有循环依赖的firebase数据结构?
尝试删除console.log()行。
答案 1 :(得分:0)
删除console.log对我有用。我必须对我的代码执行以下操作(Ionic Google Analytics插件 - https://ionicframework.com/docs/native/google-analytics/)
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = UIImage()
}