暗黙的な同期が必要な場合に使用angularFire
します。つまり、モデルに加えられた変更は、他のすべてのクライアントに即座に反映されます (逆も同様です)。
angularFireCollection
ローカル データの変更をいつサーバーに送信する必要があるかを制御したい場合に使用します。リモートで変更を加えると、ローカル コレクションが自動的に更新されます。
暗黙の同期:
myapp.controller('MyCtrl', ['$scope', 'angularFire',
function MyCtrl($scope, angularFire) {
var promise = angularFire(url, $scope, 'items', []);
}
]);
最初の引数は、データを保存/取得する Firebase の場所です。2 番目の引数はスコープ、3 番目の引数は $scope の下のプロパティの名前で、Promise が満たされるとすぐにデータをバインドします。例えば:
promise.then(function() {
// Data available in $scope.items
});
4 番目の引数は、JS オブジェクトに必要なデータの型です。[]
配列、{}
オブジェクト、""
文字列、1
数値、およびtrue
ブール値に使用します。指定された Firebase の場所にデータが存在しない場合は、この引数を使用してデフォルト値を設定することもできます。
暗黙的な同期では$scope.items
、変更を加えるだけで変更が Firebase 経由で他のすべてのクライアントと自動的に同期されます。同様に、リモートで行われた変更は自動的に更新されます$scope.items
。
明示的な同期:
myapp.controller('MyCtrl', ['$scope', 'angularFireCollection',
function MyCtrl($scope, angularFireCollection) {
$scope.items = angularFireCollection(url);
}
]);
このメソッドは引数を 1 つだけ取ります。項目を追加または削除する場合はadd
、remove
またはupdate
メソッドを使用します。例えば:
$scope.items.add({test: "object"});
スコープを必要としないためangularFireCollection
、コントローラの外部で Firebase を使用したい場合 (angular ディレクティブ、モジュールなど) にもこれを使用できます。