Jeh*_*lik 60 session angularjs
我正在使用AngularJS框架工作.我很擅长使用这个框架; 在过去,我只使用纯JavaScript和jQuery.该项目是针对利基市场的一种网页设计应用程序.
当用户在设计期间在页面之间移动时,我想要维护他们正在进行的所有更改的会话.
现在,如果用户登录,我们使用数据库中的数据加载会话.当用户单击"保存"按钮时,我们使用会话数据更新数据库.有人告诉我,我可以在Angular中保持类似于骨干的会话.这可能吗?如果是的话,您能指导我一个不关注指令或UI的教程吗?如果这是不可能的,还有其他可行的选择吗?
Val*_*nov 58
这是一种代码片段:
app.factory('Session', function($http) {
var Session = {
data: {},
saveSession: function() { /* save session data to db */ },
updateSession: function() {
/* load data from db */
$http.get('session.json').then(function(r) { return Session.data = r.data;});
}
};
Session.updateSession();
return Session;
});
Run Code Online (Sandbox Code Playgroud)
以下是Plunker示例,您可以如何使用它:http://plnkr.co/edit/Fg3uF4ukl5p88Z0AeQqU?p = preview
因为对于更稳定的角度版本,答案不再有效,我发布了一个更新的解决方案.
PHP页面:session.php
if (!isset($_SESSION))
{
session_start();
}
$_SESSION['variable'] = "hello world";
$sessions = array();
$sessions['variable'] = $_SESSION['variable'];
header('Content-Type: application/json');
echo json_encode($sessions);
Run Code Online (Sandbox Code Playgroud)
在Angular中仅发送您想要的会话变量,而不是所有会话变量都不希望暴露超出需要的内容.
JS All Together
var app = angular.module('StarterApp', []);
app.controller("AppCtrl", ['$rootScope', 'Session', function($rootScope, Session) {
Session.then(function(response){
$rootScope.session = response;
});
}]);
app.factory('Session', function($http) {
return $http.get('/session.php').then(function(result) {
return result.data;
});
});
Run Code Online (Sandbox Code Playgroud)
HTML
在您的HTML中,您可以参考您的会话
<html ng-app="StarterApp">
<body ng-controller="AppCtrl">
{{ session.variable }}
</body>
Run Code Online (Sandbox Code Playgroud)
您还可以尝试基于window.sessionStorage或window.localStorage在页面重新加载之间保持状态信息来进行服务.我在Web应用程序中使用它,该应用程序部分在AngularJS中制作,并且页面URL以"旧方式"更改为工作流的某些部分.IE8甚至支持Web存储.为方便起见,这里是angular-webstorage.
| 归档时间: |
|
| 查看次数: |
171730 次 |
| 最近记录: |