1

我之前问过一个关于如何填充选择下拉菜单的问题

当我试图实现这一点时:

<html lang="en" class="light" data-ng-app="test">
<body data-ng-controller="TestCtrl">
...

    <script type="text/javascript">
        $(document).ready(function () {
            angular.module('test', []).controller('TestCtrl', function ($scope, $http) {
                $scope.selectedTestAccount = null;
                $scope.testAccounts = [];

                $http({
                    method: 'GET',
                    url: '/Admin/GetTestAccounts',
                    data: { applicationId: 3 }
                }).success(function (result) {
                    $scope.testAccounts = result;
                });
            });
        });
    </script>

但它在 Chrome 开发者工具中给了我一个错误说:

Uncaught Error: No module: test

我注意到回复我帖子的人提到我需要确保 Angular 在我的 HTML 上运行并且模块已加载。好吧,我确实在脚本区域中包含了 Angular,但我仍然收到上述消息。谁能告诉我我可能做错了什么。

4

2 回答 2

3

显然,当您将声明置于声明ngApp之上时module,angular 会尝试在声明module 之前启动。

你有两个选择:

  1. 将模块声明放在,因此当指令尝试初始化head时它就准备好了。ngApp

  2. 使用 . 手动初始化您的应用程序angular.bootstrap

手动初始化:

angular.bootstrap(angular.element("body")[0], ["test"]);

文档:
http ://docs.angularjs.org/api/angular.bootstrap

于 2013-03-29T06:42:56.220 回答
2

使用指令。不要以这种方式使用 jQuery。这是我从强大的 jQuery 背景开始使用 angular 时的第一个(也是主要)错误。

如果你需要操作一个dom元素,在大多数情况下,正确的方式是指令

http://docs.angularjs.org/guide/directive

于 2013-03-29T08:50:08.363 回答