使用angularFire
あなたが暗黙の同期をしたい場合は、お使いのモデルに作られた、すなわちすべての変更は、即座に他のすべてのクライアント(またはその逆)に伝播されます。
ローカルデータの変更をサーバーに送信する必要があるときに制御したい場合は、angularFireCollection
を使用します。リモートで変更を加えても、ローカルコレクションは自動的に更新されます。
暗黙の同期:
myapp.controller('MyCtrl', ['$scope', 'angularFire',
function MyCtrl($scope, angularFire) {
var promise = angularFire(url, $scope, 'items', []);
}
]);
最初の引数は、データを取得/保存したい時Firebaseの場所です。 2番目の引数はスコープです.3番目の引数は、$ scopeの下にあるプロパティの名前です。約束が満たされるとすぐにデータをバインドします。例:
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を使用したい場合は、あなたもこれを使用することができますが、この情報がお役に立てば幸い!
私はあなたの最初の文では "明示的"ではなく "暗黙的"を意味すると思います。 – bennlich
明示的な同期。 .on().set().push()を使用しなくなりました。 – vzhen
ありがとう@bennlich、修正済み! @vzhenいいえ、明示的な同期では 'add()'、 'remove()'、 'update()'のみを使用します。 – Anant