我手动引导我的应用程序,因此我可以在服务器上执行cookie会话检查,然后只有在用户有有效会话时才继续引导。
代码:
angular.module('ppMobi', [])
.controller('firstCtrl', function ($scope) {
$scope.loggedIn = true;
$scope.foo = "Session Valid";
});
angular.element(document).ready(function () {
var initInjector = angular.injector(["ng"]);
var $http = initInjector.get("$http");
//This will return a promise on success or failure and provided user has a valid session we can then take them to the app
//that is manually bootstrap our app.
return $http.get("/session/GetSession.json").then(function (response) {
if (response.data.success) {
console.log("Session found!");
angular.bootstrap(document, ["ppMobi"]);
} else {
window.location = "/login.html";
}
}, function (errorResponse) {
console.error("Session not found!");
});
});
这可以按预期工作,但我现在想将模块\控制器定义移动到一个单独的文件中。
我已经尝试了这个并且在主lib包含之后添加了一个脚本include到文件,所以现在我有:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.11/angular.min.js">
</script>
<script src="app/app.js"></script>
<script type="text/javascript">
angular.element(document).ready(function () {
var initInjector = angular.injector(["ng"]);
var $http = initInjector.get("$http");
//This will return a promise on success or failure and provided user has a valid session we can then take them to the app
//that is manually bootstrap our app.
return $http.get("/session/GetSession.json").then(function (response) {
if (response.data.success) {
console.log("Session found!");
angular.bootstrap(document, ["ppMobi"]);
} else {
window.location = "/login.html";
}
}, function (errorResponse) {
console.error("Session not found!");
});
});
</script>
应用程序/ app.js
angular.module('ppMobi', [])
.controller('firstCtrl', function ($scope) {
$scope.loggedIn = true;
$scope.foo = "Session Valid";
});
但似乎文件中的就绪处理程序不再被捕获,因为没有$ http正在制作,所以很明显我已经通过这样做打破了一些东西(控制台也没有错误)
我的方法有意义吗? - 请指教!感谢
答案 0 :(得分:0)
好的,所以我回答了我自己的问题......
我刚将文档就绪处理程序代码移动到我的app.js中,所以现在根据我的第一个代码片段,我在主html文件中的所有内容都是我的app.js以及库之后包含到文件中仍然存在。
对我来说这仍然很好用这种结构