从SPA前端获取后端Flash消息

时间:2013-10-01 05:55:19

标签: angularjs pyramid single-page-application flash-message ngboilerplate

我发现使用单页面应用程序处理从后端返回的flash消息非常困难。

假设有五个动作:

登录,注销,搜索,添加,删除。

每个动作都会发出消息(成功或失败,可能更多)。在非SPA中,在模板中执行类似 backend.getFlash()的操作非常容易,可以将消息存储在会话中。

但是,在SPA中,如果结果以JSON格式返回,当然后端可以将消息传递给js框架,比如angularjs。但它真的很乏味,而且根本不灵活。

有没有人有任何想法或经验?

由于

1 个答案:

答案 0 :(得分:2)

从你的问题我明白你真正想要的是为每个动作都有一些消息,比如删除你需要显示一条消息,比如“已成功删除”,你不希望这条消息与结果集来自你的后端。

在AngularJS中,您可以通过service来显示消息来实现此目的。

这是一个例子;

在AngularJS中创建这样的服务

app.factory('FlashService', function ($rootScope) {

    return {
        show: function (message) {
            $rootScope.flash = message;
            return message;
        },
        clear: function () {
            $rootScope.flash = '';
            return null;
        }
    };
});

此处 FlashService 是您要创建的服务的名称,不必担心您可以提供任何名称的名称。

要使用此服务,请将其注入所需的任何位置;

var app = angular.module("your app name", []);

app.controller("MyCtrl", function(FlashService) { 
   FlashService.show("I am here");
});

并在你的html中使用它

<div id="flash">{{flash}}</div>