我发现在使用单页应用程序时很难处理从后端返回的 flash 消息。
假设有五个动作:
登录、注销、搜索、添加、删除。
每个动作都会发出消息(成功或失败,可能更多)。在非 SPA 中,很容易在模板中执行类似 backend.getFlash()的操作来获取存储在会话中的消息。
但是,在 SPA 中,如果结果以 JSON 格式返回,那么后端当然可以将消息传递给 js 框架,比如 angularjs。但这真的很乏味,而且一点也不灵活。
有没有人有任何想法或经验?
谢谢
我发现在使用单页应用程序时很难处理从后端返回的 flash 消息。
假设有五个动作:
登录、注销、搜索、添加、删除。
每个动作都会发出消息(成功或失败,可能更多)。在非 SPA 中,很容易在模板中执行类似 backend.getFlash()的操作来获取存储在会话中的消息。
但是,在 SPA 中,如果结果以 JSON 格式返回,那么后端当然可以将消息传递给 js 框架,比如 angularjs。但这真的很乏味,而且一点也不灵活。
有没有人有任何想法或经验?
谢谢
从您的问题中,我了解到您真正想要的是为每个操作提供一些消息,例如对于删除,您需要显示一条消息,例如“已成功删除”,并且您不希望此消息与来自的结果集一起发送你的后端。
service
在 AngularJS 中,您可以通过显示消息来实现这一点。
这是一个例子;
在 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>