如何在单独的文件中手动引导引用模块的应用程序

时间:2015-02-02 22:00:36

标签: angularjs

我手动引导我的应用程序,因此我可以在服务器上执行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正在制作,所以很明显我已经通过这样做打破了一些东西(控制台也没有错误)

我的方法有意义吗? - 请指教!感谢

1 个答案:

答案 0 :(得分:0)

好的,所以我回答了我自己的问题......

我刚将文档就绪处理程序代码移动到我的app.js中,所以现在根据我的第一个代码片段,我在主html文件中的所有内容都是我的app.js以及库之后包含到文件中仍然存在。

对我来说这仍然很好用这种结构