我正在使用Ionic Framework,Firebase是我的BaaS。
控制器:
.controller('ProfileCtrl', function($scope, AuthService, DatabaseService) {
console.info('** ProfileCtrl **');
var user = firebase.auth().currentUser;
$scope.public = {};
DatabaseService.getUserPublicInfo(user.uid)
.then(function(infoSnap) {
infoSnap.forEach(function(item) {
$scope.public[item.key] = item.val();
});
});
})
服務:
.service('DatabaseService', function($q) {
this.getUserPublicInfo = function(uid) {
return firebase.database().ref('/users/'+uid+'/public/').once('value');
}
}
在我的HTML視圖我有以下幾點:
<div><h3>{{public.firstname}} {{public.lastname}}</h3></div>
沒有錯誤和調試時,$ scope.public.firstname作爲正確的值,但沒有顯示。 我在我的HTML視圖中有一個按鈕;當我點擊它時,它會改變頁面,但在頁面切換之前,我會看到名字出現。當我回到我的觀點時,第一名顯示得很好。
我試着換getUserPublicInfo在$範圍。$適用()在我的控制器,但我得到了「$摘要已在進行中」錯誤...
請幫助,它的駕駛我瘋了!
在此先感謝
謝謝韋達您的快速的答案,但我想,以避免以解決$消化錯誤,但避免使用$應用()。你知道爲什麼我的第一段代碼不工作嗎? –
當$ scope在Angular世界以外更新時,$ digest週期不會被觸發。這裏同樣的情況。如果您希望避免使用$ appy(),那麼您必須將值賦給Angular世界中的$ scope.public。 – Ved
正確添加分號'$ timeout(function(){ $ scope。$ apply(); },1);' –