0

問題と質問があります

私のクライアント側は次を使用します:

<div ng-view></div>

および次のスクリプト:

  <script src="lib/angular/angular.js"></script>
  <script src="lib/angular/angular-resource.js"></script>
  <script src="js/app.js"></script>
  <script src="js/controllers.js"></script>
  <script src="js/directives.js"></script>
  <script src="js/services.js"></script>
  <script src="js/filters.js"></script>

私のroutProviderは:

angular.module('myApp', []).
  config(['$routeProvider', function($routeProvider) {
    $routeProvider.when('/view1', {templateUrl: 'partials/partial1.html', controller: 'MyCtrl1'});
    $routeProvider.when('/view2', {templateUrl: 'partials/partial2.html', controller: 'MyCtrl2'});
    $routeProvider.otherwise({redirectTo: '/view1'});
  }]);

これはうまくいきました。

この実装が機能しない理由がわかりません。以前に何度も使用されているのを見ました。

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

myApp.config(function($routeProvider) {
  $routeProvider.
      when('/view1', {
        controller: 'MyCtrl1',
        templateUrl: 'partials/partial1.html'
      }).
      when('/view2', {
        controller: 'MyCtrl2',
        templateUrl: 'partials/partial2.html'
      }).
      otherwise( {redirecTo: '/view1'});
});

別の質問: 最初の例で関数の前に「$routeProvider」インジェクションがあるのはなぜですか? function($routProvider) がこの仕事をするべきだと私は理解しています。

ありがとう。

4

3 に答える 3

5

コードは問題なく動作しますが ( plnkr )、スペルが間違っredirectToているため、最初のリダイレクトが/view1機能しませんでした。

明示的な注入に関して$routeProvider: 明示的なバージョンの注入を使用すると、本番環境で使用するために JS コードを縮小するときに、変数の名前変更に関する問題が回避されます。たとえば、明示的でなくても、コードは次のように縮小される可能性があります。

a.config(function(b) { b.when('/view1', ...) });

Angular は引数の名前に依存して正しいプロバイダーを注入するため、文字列として明示的に名前を付けることができます (縮小されません)。

a.config([ '$routeProvider', function(b) { ... } ]);

そうすれば、Angular は最初の引数が であることを認識します$routeProvider

于 2013-08-02T16:07:30.760 に答える
0

これはうまくいくはずです!

angular.module('myApp', [])
    .config(function($routeProvider) {
        $routeProvider.when('/view1', {
                controller: 'MyCtrl1',
                templateUrl: 'partials/partial1.html'
            });
        $routeProvider.when('/view2', {
                controller: 'MyCtrl2',
                templateUrl: 'partials/partial2.html'
            });
        $routeProvider.otherwise({
            redirectTo: '/view1'
        });
    });
于 2013-08-02T20:50:26.253 に答える