2013-05-24 32 views
6

Tôi mới đến cơ sở dữ liệu Firebase. Tôi muốn xây dựng nó với angularjs và tôi thấy angularfire.Sự khác biệt giữa Firebase AngularFire ngầm và đồng bộ rõ ràng

Trong tài liệu góc của tài liệu được liệt kê Đồng bộ hóa rõ ràng và rõ ràng. Tôi đã cố gắng để hiểu tài liệu trong github nhưng tôi vẫn không hiểu sự khác biệt là gì và cách sử dụng chúng. angularFire()angularFireCollection()

cũng vậy, đối số có nghĩa là gì trong angularFire()angularFireCollection()?

cảm ơn trong ADV

Trả lời

19

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!

+0

Tôi nghĩ bạn ngụ ý "ẩn" thay vì "rõ ràng" trong câu đầu tiên của bạn. – bennlich

+0

Đồ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

+0

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

Các vấn đề liên quan