问题标签 [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.
angularjs - 工厂:获取 Firebase 简单登录的当前 user.id(电子邮件/密码)
我正在寻找一种可靠的方法来在我的所有控制器中使用“当前用户 ID”。使用:Firebase 简单登录:电子邮件/密码验证
我的 ida:我需要一个可以注入控制器的“工厂”,以使“当前用户 ID”始终可用。
我想出了这段代码:
我最简单的控制器看起来像:
在 HTML(角度部分)中,我有:
=> id、email、provider 是“未定义的”。在控制台中,我看到“工厂:用户:成功登录:”,用户正确 - 对象。
=> 异步加载数据问题?
我也尝试过(没有运气):
这样的工厂将非常有用!感谢您为我指明正确的方向!
编辑 1.1: 现在,使用 $rootscope hack
=> 相同的效果 - mycontroller 太快 - 工厂速度太慢。
TANHKS 提供任何有用的建议!想知道其他人如何解决这个问题!
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:
angularjs - TypeError:无法调用未定义的方法“子”
Angular 和 Firebase 的新手。我在初始页面加载时遇到错误“TypeError:无法调用未定义的方法'子'”。它是未定义的,因为它还没有准备好,但我不确定如何处理这种情况。
场景如下: 1. 用户登录 2. Firebase 验证用户是否已登录 3. 用户有一个孩子“朋友”的朋友列表 4. 代码在 Firebase 验证用户之前尝试获取孩子“朋友”
登录代码
稍后,当用户在 /friends 路由时,在 FriendsController 中
FriendsList 上发生错误是因为 userData ref 还没有准备好(我认为)。从其他地方导航到 /friends 没有这个问题,只有在页面加载时。我正在寻找解决方案来处理这种情况。谢谢你。
编辑:根据 Kato 和 Anant 迄今为止的建议,我尝试过的其他建议。
使用承诺:
然后在朋友控制器中:
这会导致好友列表无法加载。有趣的是,当我点击一个菜单按钮时 loginPromise 就会运行。这不是我所期望的。知道为什么会这样吗?
使用观察者模型:
在 FriendsController 中:
这适用于页面加载,但如果导航到页面则不起作用,因为不再有“已验证”的事件广播。所以这似乎引入了另一个问题。如何导航到 /friends 以便加载所需的数据?
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 直接注入控制器,但是在它被视为未知提供者方面出现了类似的问题。
如果可能的话,有人可以就这里可能出现的问题提出建议吗?
javascript - 使用 AngularJS 检测 AngularFireCollection 的更改
基本上,我正在尝试将 $watch 与 angularFireCollection 一起使用。它似乎没有按照我想要的方式工作。
这就是我目前所拥有的:
因此,当我加载页面时,它会在首次加载数据时在控制台中记录“新”,这很好,但是当新数据进入时,它不会记录任何内容。知道为什么会这样吗?
angularjs - angularFire 和身份验证
考虑 TodoMVC 示例(https://github.com/firebase/angularFire/tree/gh-pages/examples/todomvc),如果我要向这个应用程序添加身份验证,我该如何处理用户的可见性 -即如果User1 添加待办事项,我想确保它只对他们可见,如果User2 登录,他看不到User1 的项目。我怎样才能做到这一点?
最重要的是——我想第二个问题与前一个问题有点相关——存储待办事项和用户以及每个待办事项的可见性的最佳方式是什么?
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:
- List all the phones
- If the user clicks to get the details of one of them, check if they are authenticated
- if yes, show the phone details -- if not, redirect them to the login page.
- 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 = true
and 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?
angularjs - 如何对 angularFireCollection 进行排序?
我在使用 angularFireCollection 绑定对较大的数组进行排序时遇到问题:
在我的模板中有代码:
当 offer.length < 100 时,新项目会正确显示在顶部。在 100 个项目之后,排序完全停止工作。
angularjs - AngularFire 优先级更改不起作用,而是插入重复项
我在优先级列表中有一个 angularFireCollection。我看到非常奇怪的行为。基本上,当优先级发生变化时,假设项目#2 变为#1,而不是移动项目,它只是将#1 覆盖为#2,现在有一个项目的副本,而前#1 只是消失了。
我该如何解决?
这是控制列表显示的代码行。我不确定还有什么可以分享的。
angularjs - firebase注销方法没有回调?
我正在查看此文档: https ://www.firebase.com/docs/security/simple-login-overview.html并基于它看起来不像注销不接受回调。我尝试传递一个并得到一个响应,它接受 0 个参数。有没有办法确认注销成功?