2

angularJS のルート機能を学習しようとしていますが、これまでに起こったことは機能しません。

Load、Display、または Play をクリックした場合 (私の例では、可能なアクション URL へのリンク) <div ng-view></div>、DOM にまだ存在します (検査すると)、さらに、関連する html 部分ファイルに置き換えられません。ルート プロバイダーの templateUrl。

Chromium ログ コンソールに次のエラーが表示されます。 Uncaught ReferenceError: LoadCtrl is not defined from my_app

ルート プロバイダーを定義するときにすべてwhenをコメントにすると、エラーはスローされなくなります。

したがって、ルートプロバイダーの定義に関するコントローラーの定義の順序に依存する可能性があると考えました。そのため、別の controllers.js ファイルの前または後にそれらを配置しようとしました...しかし、それは何も変更しません。

私は明らかな間違いを犯していると思いますが、それを見つけることはできません。何か案が ?

の内容index.html:

<!DOCTYPE html>
<html ng-app="my_app">
<body>
    <section class="section_command">
        <ul>
            <li><a href="#/load">Load file</a></li>
            <li><a href="#/display">Display file</a></li>
            <li><a href="#/play">Play file</a></li>
        </ul>   
    </section>
    <section class="section_content">
        <div ng-view></div>
    </section>

<script type="text/javascript" src="js/angular.js"></script>
<script type="text/javascript" src="js/app.js"></script>
</body>
</html>

の内容app.js:

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

app.controller('LoadCtrl', function($scope, $http, $routeParams){});
app.controller('DisplayCtrl', function($scope, $http, $routeParams){});
app.controller('PlayCtrl', function($scope, $http, $routeParams){});

app.config(['$routeProvider', function($routeProvider) 
{
  $routeProvider.
      when('/load', {templateUrl: 'partials/load.html', controller: LoadCtrl}).
      when('/display', {templateUrl: 'partials/display.html', controller: DisplayCtrl}).
      when('/play', {templateUrl: 'partials/play.html', controller: PlayCtrl}).
      otherwise({redirectTo: '/'});
}]);

部分的な html ファイルは可能な限り単純です。

load.html:<span>Loading</span>

display.html:<span>Displaying</span>

play.html:<span>Playing</span>

4

1 に答える 1

3

文字列名でコントローラーをアドレス指定する必要があると確信しています。

when('/load', {templateUrl: 'partials/load.html', controller: 'LoadCtrl'}).
于 2013-09-19T16:08:42.433 に答える