我是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