问题标签 [angularfire]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
11076 浏览

angularjs - 工厂:获取 Firebase 简单登录的当前 user.id(电子邮件/密码)

我正在寻找一种可靠的方法来在我的所有控制器中使用“当前用户 ID”。使用:Firebase 简单登录:电子邮件/密码验证

我的 ida:我需要一个可以注入控制器的“工厂”,以使“当前用户 ID”始终可用。

我想出了这段代码:

我最简单的控制器看起来像:

在 HTML(角度部分)中,我有:

=> id、email、provider 是“未定义的”。在控制台中,我看到“工厂:用户:成功登录:”,用户正确 - 对象。

=> 异步加载数据问题?

我也尝试过(没有运气):

这样的工厂将非常有用!感谢您为我指明正确的方向!

编辑 1.1: 现在,使用 $rootscope hack

=> 相同的效果 - mycontroller 太快 - 工厂速度太慢。

TANHKS 提供任何有用的建议!想知道其他人如何解决这个问题!

0 投票
2 回答
2628 浏览

firebase - 遍历 Firebase 和 FirebaseIndex 的结果

如何读取 (Firebase & FirebaseIndex) 对象?

我的 Ctrl 看起来像:

console.log ($scope.surveys) 看起来像:

现在 - 我必须遍历所有结果。$scope.surveys.length => 不起作用

阅读 $scope.surveys.0.title =>错误!我看到了 - [add: function, remove: function, update: function] - 有没有办法阅读 $scope.surveys.0.title ?


编辑1: @Kato(希望更清楚)

在这里你可以看到我当前的 Ctrl 尝试:


编辑2:

0 投票
1 回答
786 浏览

angularjs - TypeError:无法调用未定义的方法“子”

Angular 和 Firebase 的新手。我在初始页面加载时遇到错误“TypeError:无法调用未定义的方法'子'”。它是未定义的,因为它还没有准备好,但我不确定如何处理这种情况。

场景如下: 1. 用户登录 2. Firebase 验证用户是否已登录 3. 用户有一个孩子“朋友”的朋友列表 4. 代码在 Firebase 验证用户之前尝试获取孩子“朋友”

登录代码

稍后,当用户在 /friends 路由时,在 FriendsController 中

FriendsList 上发生错误是因为 userData ref 还没有准备好(我认为)。从其他地方导航到 /friends 没有这个问题,只有在页面加载时。我正在寻找解决方案来处理这种情况。谢谢你。

编辑:根据 Kato 和 Anant 迄今为止的建议,我尝试过的其他建议。

使用承诺:

然后在朋友控制器中:

这会导致好友列表无法加载。有趣的是,当我点击一个菜单按钮时 loginPromise 就会运行。这不是我所期望的。知道为什么会这样吗?

使用观察者模型:

在 FriendsController 中:

这适用于页面加载,但如果导航到页面则不起作用,因为不再有“已验证”的事件广播。所以这似乎引入了另一个问题。如何导航到 /friends 以便加载所需的数据?

0 投票
1 回答
693 浏览

angularjs - 将 angularFireCollection 注入 angular.js 配置以用于解析

我最近一直在尝试使用 Angular.js。作为其中的一部分,我创建了一组非常简单的控制器,其中包含 ng-view 和模板,以根据请求的路由触发。我使用 angularFireCollection 只是为了从 Firebase 中获取一个数组。这在不构成 ng-view 的 thumbnailController 中工作正常。

我的问题是除了流入thumbnailController的数据外,我还需要另外两个控制器才能访问数据。我最初只是将数据设置为 $rootScope 的一部分,或者将 ng-view 作为设置 thumbnailController 的 div 的子级。

但是,从这个角度来看,问题是每个子控制器可能会尝试在模板中设置数据,然后才能从 Firebase 实际获得数据。

根据这个问题angularFire route resolution的答案,该解决方案似乎正在使用 resolve 。但是,使用下面的代码(并且还引用 angularFireCollection)我收到 angularFire 是未知提供者的错误消息。我的理解是下面的代码应该足够了,我还要补充一点,在 thumbnailController 中使用 angularFireCollection 可以正常工作,就像我说的那样。

我还尝试使用 .$inject 将 angularFire/aFCollection 直接注入控制器,但是在它被视为未知提供者方面出现了类似的问题。

如果可能的话,有人可以就这里可能出现的问题提出建议吗?

0 投票
1 回答
190 浏览

javascript - 使用 AngularJS 检测 AngularFireCollection 的更改

基本上,我正在尝试将 $watch 与 angularFireCollection 一起使用。它似乎没有按照我想要的方式工作。

这就是我目前所拥有的:

因此,当我加载页面时,它会在首次加载数据时在控制台中记录“新”,这很好,但是当新数据进入时,它不会记录任何内容。知道为什么会这样吗?

0 投票
1 回答
1098 浏览

angularjs - angularFire 和身份验证

考虑 TodoMVC 示例(https://github.com/firebase/angularFire/tree/gh-pages/examples/todomvc),如果我要向这个应用程序添加身份验证,我该如何处理用户的可见性 -即如果User1 添加待办事项,我想确保它只对他们可见,如果User2 登录,他看不到User1 的项目。我怎样才能做到这一点?

最重要的是——我想第二个问题与前一个问题有点相关——存储待办事项和用户以及每个待办事项的可见性的最佳方式是什么?

0 投票
1 回答
3578 浏览

angularjs - How to properly implement angularFireAuth?

I have changed the official AngularJS documentation to use Firebase (the phone tutorial).

This is the router of my app:

This is how the controller looks like - but it is probably incorrect. The login function gets called, however I'm not sure what to do next. How should I redirect the user from the login page to the phone-detail.html page?

The login.html looks like this:

What I'd like to achieve is this:

  1. List all the phones
  2. If the user clicks to get the details of one of them, check if they are authenticated
  3. if yes, show the phone details -- if not, redirect them to the login page.
  4. After logging in, redirect them to the phone detail view.

I'm struggling with points 3 and 4.

Update

After the comments from Anant -- I found something very interesting. I added a few debug msgs to angularFire.js and for the time being I changed the authRequired from true to false in my controller above.

If navigate to /phones - I get a list returned back from firebase as expected. Inside _loggedIn() I added console.log(user) which returns a user object (also, inside initialise I added a debug statement: https://github.com/firebase/angularFire/blob/master/angularFire.js#L437 -- both confirm that I have a valid user, already logged in.

If I then click on an item, I get what I expect - the username and the actual page loads (see the html below). If I refresh that page (http:///phones/#/0) I get the right page again and in the console, I still see a valid user object, indicating that the user is still logged in

Here's the HTML for both phone-list.html and phone-details.html:

And a snippet from the JSON (that is now part of Firebase):

If I then change the authRequired back to true - and if the user object is available, then I get an endless loop of page loads - first it's /login then it gets automatically redirected /phone/0 and immediately back to /login again, and this happens until the browser crashes.

Update 2

After adding some further debug lines and poking around with the code I've come up with this solution:

add the initialisation to the LoginCtrl:

In angularFire.js, I commented out lines 406 and 407:

Appended the code around line 438, essentially I added this._authenticated = trueand this._redirectTo = $route.current.pathTo - as well as this._authenticated = false to the else statement.

The only scenario where this does not work is when a user is logged in and I navigate to http://<host>/#/login - the $route.current.pathTo will be equal to /login and at the moment I'm not 100% sure how to overcome this. Any thoughts on this Anant?

0 投票
1 回答
572 浏览

angularjs - 如何对 angularFireCollection 进行排序?

我在使用 angularFireCollection 绑定对较大的数组进行排序时遇到问题:

在我的模板中有代码:

当 offer.length < 100 时,新项目会正确显示在顶部。在 100 个项目之后,排序完全停止工作。

0 投票
1 回答
348 浏览

angularjs - AngularFire 优先级更改不起作用,而是插入重复项

我在优先级列表中有一个 angularFireCollection。我看到非常奇怪的行为。基本上,当优先级发生变化时,假设项目#2 变为#1,而不是移动项目,它只是将#1 覆盖为#2,现在有一个项目的副本,而前#1 只是消失了。

我该如何解决?

这是控制列表显示的代码行。我不确定还有什么可以分享的。

0 投票
1 回答
483 浏览

angularjs - firebase注销方法没有回调?

我正在查看此文档: https ://www.firebase.com/docs/security/simple-login-overview.html并基于它看起来不像注销不接受回调。我尝试传递一个并得到一个响应,它接受 0 个参数。有没有办法确认注销成功?