Próbuję stworzyć prostą usługę przesyłania wiadomości (patrz jsFiddle) przy użyciu AngularJS i działa w większości. Jednak moja metoda „clearAlerts()” nie wydaje się mieć żadnego efektu. Jestem nowy w Angular, więc nie jestem pewien, co robię źle?
Oto jsFiddle http://jsfiddle.net/uberspeck/j46Yh/
...i kod
var App = angular.module('App', []);
function AlertsCtrl($scope, alertsManager) {
$scope.alerts = alertsManager.alerts;
}
function FooCtrl($scope, alertsManager) {
$scope.doGood = function() {
alertsManager.addAlert('Yay!', 'alert-success');
};
$scope.doEvil = function() {
alertsManager.addAlert('Noooo!', 'alert-error');
};
$scope.reset = function() {
alertsManager.clearAlerts();
};
}
App.factory('alertsManager', function() {
return {
alerts: {},
addAlert: function(message, type) {
this.alerts[type] = this.alerts[type] || [];
this.alerts[type].push(message);
},
clearAlerts: function() {
this.alerts = {}; // <= not working??
}
};
});
1
Brian
19 październik 2012, 06:09
2 odpowiedzi
Najlepsza odpowiedź
Paweł Kozłowski udzielił mi odpowiedzi za pośrednictwem listy dyskusyjnej AngularJS. Po prostu musiałem zmienić jedną linię w moim AlertsCtrl...
function AlertsCtrl($scope, alertsManager) {
$scope.alertsManager = alertsManager;
}
Sprawdź nowy działający jsFiddle
0
Ben Lesh
26 październik 2012, 18:45
Alternatywnym rozwiązaniem jest po prostu usunięcie właściwości z alertów.
clearAlerts: function() {
for(var x in this.alerts) {
delete this.alerts[x];
}
}
0
Ben Lesh
25 październik 2012, 23:15
Podobne pytania
Nowe pytania
service
Usługa to długo działający plik wykonywalny, który wykonuje określone funkcje i który nie wymaga interwencji użytkownika.