1

AngularJSを使用して単純なメッセージングサービス(jsFiddleを参照)を作成しようとしていますが、ほとんどの部分で機能しています。しかし、私の「clearAlerts()」メソッドは効果がないようです。私はAngularを初めて使用するので、何が間違っているのかわかりませんか?

これがjsFiddlehttp : //jsfiddle.net/uberspeck/j46Yh/です

...そしてコード

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??
        }
    };
});​
4

2 に答える 2

0

Pawel Kozlowskiは、AngularJSメーリングリストを介して私の答えを提供するのに十分でした。AlertsCtrlの1行を変更するだけでした...

function AlertsCtrl($scope, alertsManager) {
    $scope.alertsManager = alertsManager;
}

新しい動作するjsFiddleをチェックしてください

于 2012-10-20T16:33:52.977 に答える
0

別の解決策は、アラートのプロパティを削除することです。

http://jsfiddle.net/j46Yh/4/

    clearAlerts: function() {
        for(var x in this.alerts) {
           delete this.alerts[x];
        }
    }
于 2012-10-25T19:15:20.723 に答える