我是AngularJS的新手,並試圖將其與AngularFire/Firebase結合使用以存儲一些項目數據。我建立了一個應該處理通知的工廠,以便在中央位置顯示它們。工廠看起來是這樣的:用AngularFire創建用戶並致電工廠以顯示通知
myApp.factory("AlertService", function($timeout){
var alerts = new Array();
var addAlert = function(type, message){
alerts.push({
type: type,
msg: message
});
$timeout(function(){
removeAlert(alerts.length - 1);
}, 3000);
}
var removeAlert = function(index){
alerts.splice(index, 1);
}
return{
alerts : alerts,
addSuccessAlert : function(message){
addAlert("success", message);
},
addDangerAlert : function(message){
addAlert("danger", message);
},
deleteAlert : function(index){
removeAlert(index);
}
};
});
控制器綁定數據我用$看
$scope.$watch(function() { return AlertService.alerts; }, function (alerts) {
$scope.alerts = AlertService.alerts;
});
,只是放在一個div中的index.html:
<div id="alert">
<alert ng-repeat="alert in alerts" type="{{alert.type}}">{{alert.msg}}</alert>
</div>
這是如果我在控制器中調用AlertService.addWarningAlert("Your password is not identical");
,則完美工作。但是,如果我現在嘗試在Firebase中創建用戶後顯示通知,則數據綁定不會更新(僅限陣列)。這就是我如何創建用戶:
var ref = new Firebase("https://xyz.firebaseio.com/");
ref.createUser({
email : $scope.data.suEmail,
password : $scope.data.suPassword
}, function(error) {
if (error === null) {
console.log("User created successfully");
AlertService.addSuccessAlert("User created successfully");
} else {
console.log("Error creating user:", error);
AlertService.addWarningAlert("Error creating user");
}
});
任何想法,我(愚蠢)做錯了什麼?提前致謝!
編輯:這裏的Plnkr http://plnkr.co/edit/jSaJ5EzZ5MGRPFzhbGJg?p=preview
你可以在Plunkr或JSBIN中重現這個嗎? – 2014-12-05 11:41:30
感謝您的快速回復。這裏的Plunkr:http://plnkr.co/edit/jSaJ5EzZ5MGRPFzhbGJg?p=preview「點擊添加警報」正在工作。如果您選擇「在回撥中添加警報」,則console.log()操作正在運行,但不會顯示通知。如果您多次單擊「添加警報回叫」按鈕,則會顯示一些通知 – andinho 2014-12-05 12:57:18