3

私はangularJSで簡単な通知サービスを構築しようとしています:

angular.module("my.services", [])
    .service("NotificationsService", function() {

        this.show  = function(message, options) {
            // display a notification
        };

        this.error = function(message) {
            this.show({...});
        }

        ...

    });

これは、サーバーがAPIに埋め込まれた「通知」配列を返すときに発生します。

{
    notifications: [{type: "error", message: "Error message"}, ...],
    data: [item1, item2, ...]
}

そして今、私は自分のサービスを$ httpに接続したいのですが、そうする方法が見つかりません!...

何か案は ?

4

1 に答える 1

8

応答インターセプターを使用して、それに注入しますNotificationsService

angular.module("my.services", [], function ($httpProvider) {

    $httpProvider.responseInterceptors.push(function (NotificationsService) {

        function notify ( response ) {
            angular.forEach(response.notifications, function ( obj ) {
                NotificationsService.show( obj );
            });
            return response;
        }

        return function ( promise ) {
            return promise.then(notify, notify);
        }
    });

});
于 2013-01-14T00:14:14.293 に答える