JSON.stringify无法序列化循环结构:Ionic9错误为Ionic / AngularFire应用程序

时间:2015-09-28 19:21:25

标签: ionic-framework angularjs-ng-repeat firebase ios9

我今天更新了我的Xcode并在iOs9版本上运行我的Ionic应用程序。每次从ng-repeat列表单击到详细视图时,Xcode控制台上都会弹出新错误。错误是:

error JSON.stringify()ing argument: TypeError: JSON.stringify cannot serialize cyclic structures.

错误似乎是由AngularFire firebaseObject引起的。以下是如何复制问题(必须构建到ios并在xcode7中查看错误):

  1. 通过运行:

    使用Ionic starter sidemen模板
    $ sudo npm install -g ionic cordova
    $ ionic start myApp sidemenu
    
  2. 修改PlaylistsCtrl和PlaylistCtrl,如下所示:

  3. 
    
    .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;
    &#13;
    &#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>
    

2 个答案:

答案 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()

    }