1

私は AngularFire が初めてで、単純な概念を理解しようとしています。http://angularfire.com/tutorial/index.html#gettingstartedにある AngularFire チュートリアルを参照すると、AngularFire を使用してプリミティブな「チャット」アプリケーションを構築する基本的な例があります。

チュートリアルは非常に明確で簡潔ですが、主なポイントが 1 つわかりません。

 function MyCtrl($scope, angularFire){
    $scope.messages = [];
    var ref = new Firebase("https://<xxxxxx>.firebaseio.com/messages");
    angularFire(ref, $scope, 'messages');
    $scope.messages = []; //shouldn't this clear the data locally and remotely?
 }

問題は、モデルが最初に作成され、次にモデルへの 3 ウェイ バインディングが存在するように AngularFire によるバインディング マジックがセットアップされることです。Firebase に既に保存されているデータの配列がある場合、そのデータはフェッチされて同期され、モデルはこのデータをローカルに持つようになります。

私が単に理解していないのは、コントローラーコードが実行されるときに、angularFireバインディングが配線された後にモデルを空の配列に設定すると、Firebaseデータがクリアされないのはなぜですか? ページを更新すると、基本的にデータが消去され続けるという事実を気にしないでください (私が望む動作)。

これで、$scope オブジェクトで定義された clear という名前のメソッドを呼び出す ng-click イベントをボタンに接続すると、この動作を機能させることができます。そのメソッド内にある場合は、単に $scope.messages = []; を呼び出すだけで、モデルがローカルおよびリモートでクリアされます。

しかし、なぜこれが初期化で機能しないのですか?

ヘルプはいつでも大歓迎です。

4

2 に答える 2