私は 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 = []; を呼び出すだけで、モデルがローカルおよびリモートでクリアされます。
しかし、なぜこれが初期化で機能しないのですか?
ヘルプはいつでも大歓迎です。