为什么这个angularjs应用程序没有启动?

时间:2013-10-19 14:29:22

标签: javascript angularjs

我正在尝试构建一个angularjs应用程序。一切似乎都很好,没有错误,但它不起作用。为了删除其他因素,我删除了所有内容(requirejs等)并将其缩小为一个小的html文件。

这是html中的js代码:

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <script src="bower_components/angular/angular.js"></script>
        <script src="bower_components/angular-route/angular-route.js"></script>
        <script>


        angular.module('application', ['ngRoute']);
        angular.module('application').config(['$routeProvider', function($routeProvider) {
            $routeProvider.when('/', {template: 'test content', controller: 'controller1'});
            $routeProvider.otherwise({redirectTo: '/'});
        }]);
        angular.module('application').controller('controller1', ['$scope', function($scope) {
            console.log('in controller1');
        }]);
        angular.bootstrap(document, ['application']);


        </script>
    </head>
    <body>
    </body>
</html>

结果我希望在页面上看到“测试内容”,在控制台中看到“在controller1中”。 你能告诉我为什么它不起作用吗?

3 个答案:

答案 0 :(得分:3)

您缺少与路由一起使用的ng-view指令,以显示路由配置中提供的模板。

Working plunker

代码:

  <body>
    <div ng-view></div>
    <script>
        angular.module('app', [])
        .config(['$routeProvider', function($routeProvider) {
            $routeProvider.when('/', {template: '<p>test content</p>', controller: 'controller1'});
            $routeProvider.otherwise({redirectTo: '/'});
        }])
        .controller('controller1', ['$scope', function($scope) {
            console.log('in controller1');
        }]);
        angular.bootstrap(document, ['app']);
    </script>
  </body>

答案 1 :(得分:2)

Angular JS bootstraps使用在html中声明的ng-app和ng-controller指令。

参考:

http://docs.deployd.com/docs/collections/examples/a-simple-todo-app-with-angular.md

答案 2 :(得分:1)

尝试添加围绕引导调用添加此文档准备测试。它将等待调用bootstrap,直到文档(DOM)完全准备好。

如果你没有在ready()调用中包装bootstrap,那么当angular构建它的DOM视图时,浏览器可能仍在构建DOM的过程中。这可能导致角度不知道页面的某些部分,或者更糟(这可能很难调试)。

 angular.element(document).ready(function() {
     angular.bootstrap(document, ['application']);
};

您可以在本指南中详细了解角度初始化:http://docs-angularjs-org-dev.appspot.com/guide/bootstrap

或者您可以使用<html ng-app='application'>而不是其他人提到的,如果您想要更传统的路线 - 但是您必须摆脱angular.bootstrap调用。