問題タブ [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 - FACTORY: Firebase Simple Login の現在の user.id を取得 (メール / パスワード)
すべてのコントローラーで「現在のユーザー ID」を利用できる確実な方法を探しています。使用: Firebase シンプルログイン: メール/パスワード認証
私の ida: 「現在のユーザー ID」を常に利用できるようにするには、コントローラーに挿入できる「ファクトリ」が必要です。
私はこのコードを思いつきました:
私の最も単純なコントローラーは次のようになります。
HTML(角度部分)には次のものがあります:
=> ID、電子メール、プロバイダーは「未定義」です。コンソールに「FACTORY: User: Login successfully:」と表示され、正しいユーザー - オブジェクトが表示されます。
=> データの問題の非同期ロード?
私も実験しました(運が悪い):
このような FACTORY は非常に便利です。私を正しい方向に向けてくれてありがとう!
編集 1.1: 今、$rootscope ハックで
=> 同じ効果 - mycontroller が速すぎる - 工場出荷時から遅い。
役立つ提案があればTAHNKS!他の人がこれをどのように解決するのか疑問に思います!
angularjs - TypeError: undefined のメソッド 'child' を呼び出せません
angular と firebase の新機能。最初のページ読み込み時に「TypeError: メソッド 'child' を未定義で呼び出せません」というエラーが発生します。まだ準備ができていないため未定義ですが、状況をどのように処理するかはわかりません。
シナリオは次のとおりです。 1. ユーザーがログインする 2. Firebase がユーザーがログインしていることを確認する 3. ユーザーが子の「友達」の友達リストを持っている 4. Firebase がユーザーを確認する前に、コードが子の「友達」を取得しようとする
ログインするためのコード
後で、ユーザーが /friends ルートにいるときの FriendsController で
userData ref の準備ができていないため、friendsList でエラーが発生します (と思います)。他の場所から /friends に移動してもこの問題は発生せず、ページの読み込み時にのみ発生します。シナリオを処理するためのソリューションを探しています。ありがとうございました。
編集:加藤とアナントからのこれまでの提案に基づいて、私が試した追加の提案。
promise を使用する:
次に、友達のコントローラーで:
これにより、友達リストが読み込まれません。興味深いことに、メニュー ボタンをクリックすると loginPromise が実行されます。これは私が期待したものではありません。なぜこれが考えられるのでしょうか?
オブザーバー モデルを使用します。
FriendsController で:
これはページの読み込みでは機能しますが、「認証済み」のイベント ブロードキャストがなくなったため、ページに移動する場合は機能しません。したがって、これにより別の質問が発生するようです。目的のデータが読み込まれるように /friends に移動する方法は?
angularjs - 解決で使用するための angularFireCollection の angular.js 構成への注入
最近、Angular.js を少し試しています。この一環として、リクエストされたルートに応じてトリガーする ng-view とテンプレートを備えた非常に単純なコントローラーのセットを作成しました。Firebase から配列を取得するためだけに angularFireCollection を使用しています。これは、ng-viewの一部を形成しないthumbnailControllerで正常に機能します。
私の問題は、thumbnailController に流れるデータに加えて、データにアクセスできるようにするために他の 2 つのコントローラーも必要であることです。最初は、データを $rootScope の一部にするか、ng-view を、thumbnailController が設定されている div の子として設定するだけです。
ただし、その観点からの問題は、Firebase から実際に使用可能になる前に、各サブコントローラーがおそらくテンプレートにデータを設定しようとすることです。
ソリューションは、この質問angularFire route resolutionへの回答に従って解決を使用しているようです。ただし、以下のコードを使用して (また angularFireCollection を参照して)、angularFire が不明なプロバイダーであるというエラー メッセージが表示されます。私の理解では、以下のコードで十分なはずです。また、thumbnailController で angularFireCollection を使用すると、私が言うように正常に機能することも付け加えておきます。
.$inject を使用して angularFire/aFCollection をコントローラーに直接注入する実験も行いましたが、不明なプロバイダーと見なされるという点で同様の問題が発生しました。
可能であれば、ここで問題が何であるかについて誰かがアドバイスできますか?
javascript - AngularJS で AngularFireCollection の改ざんを検出する
基本的に、AngularFireCollection で $watch を使用しようとしています。しかし、私が望むように機能しているようには見えません。
これは私が現時点で持っているものです:
そのため、ページをロードすると、データが最初にロードされたときにコンソールに「新規」と記録されますが、それは問題ありませんが、新しいデータが入ってくると、何も記録されません。なぜこれが起こるのかについて何か考えはありますか?
angularjs - angularFire と認証
TodoMVC の例 ( https://github.com/firebase/angularFire/tree/gh-pages/examples/todomvc ) を考慮すると、このアプリに認証を追加する場合、ユーザーの可視性をどのように処理できますか?つまり、ユーザー 1 が todo アイテムを追加した場合、それがユーザーにのみ表示され、ユーザー 2 がログインした場合、ユーザー 1 のアイテムが表示されないようにしたいと考えています。どうすればこれを達成できますか?
これに加えて、この 2 番目の質問は前の質問と多少関連していると思います。todo とユーザー、および各 todo の可視性を保存する最良の方法は何ですか?
angularjs - angularFireAuthを適切に実装するには?
Firebase を使用するように公式の AngularJS ドキュメントを変更しました (電話チュートリアル)。
これは私のアプリのルーターです:
コントローラは次のようになりますが、おそらく正しくありません。ログイン機能が呼び出されますが、次に何をすべきかわかりません。ユーザーをログイン ページから phone-detail.html ページにリダイレクトするにはどうすればよいですか?
login.html は次のようになります。
私が達成したいのはこれです:
- すべての電話を一覧表示する
- ユーザーがそれらのいずれかの詳細を取得するためにクリックした場合は、それらが認証されているかどうかを確認します
- はいの場合は、電話の詳細を表示します。そうでない場合は、ログイン ページにリダイレクトします。
- ログイン後、電話の詳細ビューにリダイレクトします。
3と4で悩んでいます。
アップデート
Anant からのコメントの後、非常に興味深いものを見つけました。angularFire.js にいくつかのデバッグ メッセージを追加し、当面の間、上記のコントローラーで authRequired を true から false に変更しました。
/phones に移動すると、期待どおりに firebase からリストが返されます。内部にユーザー オブジェクトを返すもの_loggedIn()
を追加しました (また、初期化の内部にデバッグ ステートメントを追加しました: https://github.com/firebase/angularFire/blob/master/angularFire.js#L437 -- どちらも有効なユーザーであることを確認します) 、 ログイン済み。console.log(user)
次に項目をクリックすると、ユーザー名と実際のページが読み込まれます (以下の html を参照)。そのページ (http:///phones/#/0) を更新すると、正しいページが再び表示され、コンソールにはまだ有効なユーザー オブジェクトが表示され、ユーザーがまだログインしていることを示しています。
phone-list.html と phone-details.html の HTML は次のとおりです。
JSON からのスニペット (現在は Firebase の一部です):
次に authRequired を true に戻すと、ユーザー オブジェクトが使用可能な場合、ページ読み込みの無限ループが発生します。最初は /login で、次に自動的に /phone/0 にリダイレクトされ、すぐに /login に再び戻ります。これは、ブラウザがクラッシュするまで発生します。
更新 2
さらにいくつかのデバッグ行を追加し、コードをいじった後、私はこの解決策を思いつきました:
初期化を LoginCtrl に追加します。
angularFire.js で、406 行目と 407 行目をコメントアウトしました。
438行目のあたりにコードを追加しました。基本的にthis._authenticated = true
、and this._redirectTo = $route.current.pathTo
- とthis._authenticated = false
elseステートメントを追加しました。
これが機能しない唯一のシナリオは、ユーザーがログインしてナビゲートするhttp://<host>/#/login
場合$route.current.pathTo
です/login
。このアナントについて何か考えはありますか?
angularjs - AngularFire Priority の変更が機能せず、代わりに重複したアイテムが挿入される
優先度のあるリストに angularFireCollection があります。非常に奇妙な行動が見られます。基本的に、優先度が変更された場合、アイテム #2 が #1 になるとしましょう。アイテムを移動する代わりに、#1 を #2 として上書きするだけで、元の #1 が単純に消えるアイテムの複製ができます。
これを修正するにはどうすればよいですか?
これは、リストの表示を制御するコード行です。関連する他に何を共有すべきかわかりません。
angularjs - firebase logout メソッドにはコールバックがありませんか?
私はこのドキュメントを見ています: https://www.firebase.com/docs/security/simple-login-overview.htmlに基づいており、ログアウトがコールバックを受け入れないようには見えません。1つ渡そうとしたところ、0個の引数を受け入れるという応答がありました。ログアウトが成功したことを確認する方法はありますか?