23

angular.js プロジェクトをブートストラップしようとしています。これは私の index.html です:

<!doctype html>
<html ng-app="myapp">
<head>
    <meta charset="utf-8">
    <base href="{% url 'app' %}" />

    <title>Project</title>
</head>
<body>
    <div ng-view>
        <p>Loading...</p>
    </div>

    <script>
        var url = function(path) { return '{{ STATIC_URL }}' + path };
    </script>
    <script src="{{ STATIC_URL }}js/jquery-1.10.1.js"></script>
    <script src="{{ STATIC_URL }}js/angular.js"></script>
    <script src="{{ STATIC_URL }}js/project/app.js"></script>
    <script src="{{ STATIC_URL }}js/project/controllers.js"></script>
</body>
</html>

先頭のurl 'app'は、たとえば /app などのサブパスを単純に出力します。これは私の app.js です:

'use strict';

var app = angular.module('myapp', []);

app.config(['$routeProvider', function($router) {
    $router.when('/', {
        templateUrl: url('partials/foo.html'),
        controller: controllers.Foo
    });
}]);

問題は、実行しようとするたびに例外が発生することです: Uncaught Error: No module: myapp、これはangular-seed の動作とほぼ同じです。Google と StackOverflow で検索しましたが、答え ( 12 ) のどれも役に立ちませんでした。

これが私のエラーに関するフィドルです(ブラウザのコンソールを開いて確認してください)。何がうまくいかないのですか?

4

6 に答える 6

40

スクリプトの順序は非常に重要です。<head>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script>
    var app = angular.module('myapp', []);

    app.controller('Ctrl', function($scope){
        $scope.variable = "Hello";
    });
</script>
<body ng-app="myapp">
    <div ng-controller="Ctrl">
        <p>{{variable}}</p>
    </div>    
</body>

ここで試してください:

http://jsfiddle.net/vvfnN/2/

于 2013-06-24T19:43:19.400 に答える
10

AlexCheukの答えを補完して、私の app.js ファイルが閉鎖に関与していることに気付きました:

(function($) {
    'use strict';

    // all angular.js stuff
)(jQuery);

それが機能したクロージャを削除しました(アレックスが言ったように注文を変更することなく)!正確な理由はわかりませんが、大丈夫です。

于 2013-06-24T19:54:02.243 に答える
0

私の場合、IIFE 表記を使用しているとき、自己呼び出しの括弧を忘れていました。

(function () {
     angular.module("adminApp", []); 
}() //don't forget self invoke parentheses
);  
于 2015-06-11T19:43:58.040 に答える
-4

Yeoman/grunt サーバーの実行中に、同様の問題が発生しました。私にとってそれを修正したのは、うなり声サーバーを再起動することでした。

于 2013-08-21T21:22:24.750 に答える