我剛剛開始使用AngularFire開發我的第一個項目,並且對於整個數據樹使用$bind
與在每個子元素上明確使用$update
有點混淆。
天真地看起來很容易$bind
樹的根,並完成。但角火文檔說:
這種綁定是最有用的原始值,如字符串,布爾值和數字。
對我來說,嘗試同步深度樹與1000個節點和許多級別是有道理的。但我看到的情況更像是50個節點和3-4個層次。我是否錯過了一些有關$bind
的內容,這會使它不適合自動保持整棵樹同步?
我剛剛開始使用AngularFire開發我的第一個項目,並且對於整個數據樹使用$bind
與在每個子元素上明確使用$update
有點混淆。
天真地看起來很容易$bind
樹的根,並完成。但角火文檔說:
這種綁定是最有用的原始值,如字符串,布爾值和數字。
對我來說,嘗試同步深度樹與1000個節點和許多級別是有道理的。但我看到的情況更像是50個節點和3-4個層次。我是否錯過了一些有關$bind
的內容,這會使它不適合自動保持整棵樹同步?
當$綁定到整個樹時,您將爲每個更改事件發送和接收整個樹。例如,
/widgets/one/color/
如果我$ bind()的上部件,每次在任何部件的顏色變化,我現在調和系統中的每個部件。相反,爲了更新小部件上的顏色,我必須將整個樹寫回Firebase,以便有效地將系統中的每個小部件都設置爲(希望)預先存在的值。
相反,我可以用一個雙向同步的變化來拉:
var ref = new Firebase(URL+'/widgets');
$scope.widgets = $firebase(ref);
而當我想更新一個,這樣做如下:
$scope.updateColor = function(widgetKey, color) {
var child = $scope.widgets.$child(widgetKey);
child.color = color;
child.$save(); // only save one record, phew
});
更爲高效並且更安全,因爲用戶不會無意中覆蓋其他無意修改的記錄中的更改。
如果列表僅由單個用戶使用,並且從不同時修改,那麼這不是一個問題,唯一的問題就是帶寬(對於偶爾由單個更新的50個左右節點來說,這可能不是什麼大問題人)。
謝謝,這絕對有助於澄清。 (Docs對此很粗略) –
我們將在文檔上工作,以使這些事情更清晰! :) – Kato