我是Angular的新手,我使用的是Firebase作爲我的後端。我希望有人可以調試這個問題。當我第一次訪問我的頁面www.mywebsite.com/#defaultHash數據不會加載到DOM中,它會在訪問另一個散列鏈接並返回後執行。Angular如何不在範圍內更新?
我的控制器是這樣的:
/* initialize data */
var fb = new Firebase('https://asdf.firebaseio.com/');
/* set data to automatically update on change */
fb.on('value', function(snapshot) {
var data = snapshot.val();
$scope.propertyConfiguration = data.products;
console.log($scope.propertyConfiguration);
console.log("Data retrieved");
});
/* save data on button submit */
$scope.saveConfigs = function(){
var setFBref = new Firebase('https://asdf.firebaseio.com/products');
setFBref.update($scope.propertyConfiguration);
console.log("configurations saved!");
};
我有3條散列路線說「共享」,「註冊」和「家」與otherwise.redirectTo設置爲「共享」(他們都使用這個控制器)以下是發生的錯誤:(所有「鏈接」都是href =「#hashWhereever」)
1)轉到website.com/#Shared或者只是刷新。控制檯記錄$ scope.propertyConfiguration和「Data Retrieved」。 DOM什麼都沒顯示。
2)點擊到website.com/#Registration,控制檯正確記錄$ scope數據,DOM正確加載。
3)回到website.com/#Shared,控制檯正確記錄$範圍數據,但這次DOM正確加載。
4)刷新當前正確裝入website.com/#Shared。 DOM元素消失。
因爲$ scope.data是在所有情況下正確的這裏,應該沒有棱角確保DOM反映了模型是否正確?爲什麼只有當我從另一個鏈接點擊頁面時DOM才能正確加載。
我可以通過添加window.location.hash =「共享」,但它拋出一個巨大的錯誤的量在控制檯「修復」它。
FIXED:(八九不離十)
功能$ $範圍適用於()強制與模型同步的視圖。我會自己回答這個問題並關閉它,但我仍然想知道爲什麼視圖在正確賦值給$ scope的時候無法正確加載。如果Angular的「髒檢查」檢查模型是否有可能發生變化,是否將值賦給$ scope overqualify?
我看到,我對Angular的檢查工作方式的具體細節並不太清楚。感謝您的解釋,鏈接和多種解決方案!(包括未來的!) – user2483724
謝謝!我用鏈接到開發指南進行編譯更新了我的答案;如果你想認真對待Angular,這是一個非常有趣的閱讀。乾杯。 – Kato
非常感謝:) – user2483724