AngularFire似乎是在后续的控制器加载中删除我的对象

时间:2013-10-08 03:49:09

标签: javascript angularjs firebase angularfire

我在多人游戏中使用AngularFire,看起来AngularFire在首次加载控制器后会删除我的对象。

我正在使用browserify将我的JS文件连接在一起,所以我的所有模块看起来都像CommonJS模块。

我的控制器都是通过ngView和已定义的路由加载的。我试图了解Firebase中的用户对象是否仅限于用户服务;因此,用户对象的所有AngularFire调用都存在于服务中。

这是我的HomeController:

module.exports = function(ngModule) {
  ngModule.controller('HomeController',
      function($scope, user) {
    if (!$scope.user) {
      return;
    }

    user.getInvitations($scope);
    user.getGames($scope);
  });
};

我在我定义的auth服务中使用AngularFire的auth。当用户对象进入时,它存储在$ rootScope上。这是我的身份验证服务的片段:

ngModule.run(function(angularFireAuth, warbase, $rootScope) {
  // Here's where Firebase does all the work.
  angularFireAuth.initialize(warbase, {
    scope: $rootScope,
    name: 'user',
    path: '/login'
  });
});

我的用户服务使用{$ 1}}承诺,当用户出现在$ rootScope上时,该承诺会被解析。这是我的用户服务的片段:

gotUser

当我的HomeController由没有游戏且没有邀请的用户加载时,一切都按预期工作。用户创建游戏并显示在主屏幕上。

如果我重新加载页面,则清除用户的游戏对象(来自路径$rootScope.$watch('user', function() { if (!$rootScope.user) { return; } userRef = warUsers.child(getPlayerId()); userInvitationsRef = userRef.child('invitations'); userGamesRef = userRef.child('games'); gotUser.resolve(); }); // ... getInvitations: function(scope) { scope.invitations = []; gotUser.promise.then(function() { angularFire(userInvitationsRef, scope, 'invitations'); }); }, getGames: function(scope) { scope.games = []; gotUser.promise.then(function() { angularFire(userGamesRef, scope, 'games'); }); } )。目前没有代码可以在我的应用程序中删除这些值。

我认为可能会引用AngularFire并同步我在用户服务中设置的空白值,因此我删除了/users/:userId/games/行。如果我没有在服务范围内设置初始值,我在控制台中收到此错误:scope.games = [];

我猜这与我在Uncaught Error: Firebase.set failed: First argument contains undefined下对控制器生命周期的不熟悉有关,我误用了我的Firebase / AngularFire引用的服务,而且一般的AngularJS新生儿都变成了一个疾驰的球失败了,但我很感激任何人都可以提供的任何指示。

0 个答案:

没有答案