我发现使用单页面应用程序处理从后端返回的flash消息非常困难。
假设有五个动作:
登录,注销,搜索,添加,删除。
每个动作都会发出消息(成功或失败,可能更多)。在非SPA中,在模板中执行类似 backend.getFlash()的操作非常容易,可以将消息存储在会话中。
但是,在SPA中,如果结果以JSON格式返回,当然后端可以将消息传递给js框架,比如angularjs。但它真的很乏味,而且根本不灵活。
有没有人有任何想法或经验?
由于
答案 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>