目前我们正在将我们的应用程序从JSP迁移到AngularJS。该组织决定一次只做一个模块。我们遇到的挑战之一是将用户数据从JSP传递到AngularJS(例如index.html)。
我们希望如果调用AngularJS模块,系统将重新路由到由AngularJS管理的index.html。
我的问题是我们可以采取哪些方法将用户数据(例如用户名)从JSP传输到index.html。
可能的情况:
TIA
答案 0 :(得分:0)
理想情况下,我不建议将username
和password
注入index.html
以供angularjs控制器/服务使用。如果用户在加载角度托管页面时已经过身份验证,则可以注入授权令牌或设置将由浏览器自动发送的cookie(假设jsp app和angular app在同一个域中)
现在谈论为angularjs注入数据,我可以想到两种方法(我推荐第二种方法,因为它没有污染全局范围)
将其注释为全局,并通过$window
进行访问。例如。让你的服务器端.jsp
呈现一个带有全局var的脚本标签,如
<script type="type/javascript">
var pass = 'whatevervalue';
</script>
并使用$window
angular.module('yourapp').controller('YourCtrl', $window){
console.log($window.pass);
}
type="text/preloaded"
的脚本代码中,并通过$preloaded
服务将其提供给您的控制器。让你的jsp输出如下所示
<script type="text/preloaded">
{
"data": "point"
}
</script>
并在你的控制器中获取,如下所示
angular.module('app', ['gs.preloaded'])
.controller('SomeCtrl', function ($preloaded) {
// do something with $preloaded.
$preloaded; // => { data: "point", another: { point: "of data" } }
});
请记住在您的控制器脚本之前放置预加载的脚本以使其正常工作。来自docs
注意:您的脚本标记必须在使用$ preloaded之前运行,因此我建议将它们放在您的文档中。