Sử dụng angularFire
nếu bạn muốn đồng bộ hóa tiềm ẩn, ví dụ: bất kỳ thay đổi nào mô hình của bạn ngay lập tức sẽ tuyên truyền cho tất cả các khách hàng khác (và ngược lại).
Sử dụng angularFireCollection
nếu bạn muốn kiểm soát thời điểm mọi thay đổi dữ liệu cục bộ phải được gửi đến máy chủ. Mọi thay đổi từ xa sẽ vẫn tự động cập nhật bộ sưu tập cục bộ của bạn.
Implicit sync:
myapp.controller('MyCtrl', ['$scope', 'angularFire',
function MyCtrl($scope, angularFire) {
var promise = angularFire(url, $scope, 'items', []);
}
]);
tranh luận đầu tiên là vị trí của căn cứ hỏa lực mà bạn muốn để lưu trữ/lấy dữ liệu. Đối số thứ hai là phạm vi, đối số thứ ba là tên của thuộc tính trong phạm vi $ bạn muốn dữ liệu bị ràng buộc ngay sau khi lời hứa được thực hiện. Ví dụ:
promise.then(function() {
// Data available in $scope.items
});
Đối số thứ tư là loại dữ liệu bạn muốn trong đối tượng JS của mình. Sử dụng []
cho các mảng, {}
cho các đối tượng, ""
cho các chuỗi, 1
cho các số và true
cho boolean. Lưu ý rằng nếu không có dữ liệu có trong vị trí Firebase được cung cấp, bạn cũng có thể sử dụng đối số này để đặt giá trị mặc định.
Đồng bộ hóa ngầm nếu bạn muốn thực hiện bất kỳ thay đổi nào, chỉ cần sửa đổi $scope.items
và thay đổi sẽ tự động đồng bộ hóa với tất cả các ứng dụng khách khác thông qua Firebase. Tương tự, mọi thay đổi được thực hiện từ xa sẽ tự động cập nhật $scope.items
.
Explicit sync:
myapp.controller('MyCtrl', ['$scope', 'angularFireCollection',
function MyCtrl($scope, angularFireCollection) {
$scope.items = angularFireCollection(url);
}
]);
Phương pháp này chỉ mất một cuộc tranh cãi. Nếu bạn muốn thêm hoặc xóa các mục, hãy sử dụng phương thức add
, remove
hoặc update
. Ví dụ:
$scope.items.add({test: "object"});
Kể từ angularFireCollection
không đòi hỏi một phạm vi, bạn cũng có thể sử dụng điều này nếu bạn muốn sử dụng căn cứ hỏa lực bên ngoài của một bộ điều khiển (như chỉ thị góc, mô-đun, vv) Hope this helps!
Tôi nghĩ bạn ngụ ý "ẩn" thay vì "rõ ràng" trong câu đầu tiên của bạn. – bennlich
Đồng bộ hóa rõ ràng. vì vậy chúng tôi không còn sử dụng .on() .set() .push()? – vzhen
Cảm ơn @bennlich, đã được sửa! @vzhen Nope, trong đồng bộ hóa rõ ràng bạn chỉ sử dụng 'add()', 'remove()', và 'update()'. – Anant