2016-07-26 25 views
2

URLルートを定義した後、以下のエラーが表示されます。

  1. エラー:[$インジェクター:UNPR]不明プロバイダ:$ templateRequestProvider < - $ templateRequest < - $ルート< - ngViewDirective
  2. エラー:[$インジェクター:のcDEP]が見つかり循環依存関係:ngViewDirective

このタイプのエラーに関連する投稿をすべて読んだので、angular.jsとangular-route.jsのバージョンが同じ(最後の安定版)であることを確認しました。 私はAngularJS APIのドキュメントも読んでおり、そこに記載されている原因が問題ではないことを確認しました。

画像に表示されているブラウザの開発者ツールのエラーを理解することができないため、次に何をするべきか分かりません。私に正しい方向を指摘してください。私は別のエラーを持っているコードを変更することなく

<!DOCTYPE html> 
 
<html ng-app="sportsStore"> 
 

 
<head> 
 
    <title>SportsStore</title> 
 
    <script src="angular.js"></script> 
 
    <link href="bootstrap.css" rel="stylesheet" /> 
 
    <link href="bootstrap-theme.css" rel="stylesheet" /> 
 
    <script> 
 
    angular.module("sportsStore", ["customFilters", "cart", "ngRoute"]) 
 
     .config(function($routeProvider) { 
 

 
     $routeProvider.when("/checkout", { 
 
      templateUrl: "/views/checkoutSummary.html" 
 
     }); 
 

 
     $routeProvider.when("/products", { 
 
      templateUrl: "/views/productList.html" 
 
     }); 
 

 
     $routeProvider.otherwise({ 
 
      templateUrl: "/views/productList.html" 
 
     }); 
 
     }); 
 
    </script> 
 
    <script src="controllers/sportsStore.js"></script> 
 
    <script src="filters/customFilters.js"></script> 
 
    <script src="controllers/productListControllers.js"></script> 
 
    <script src="components/cart/cart.js"></script> 
 
    <script src="ngmodules/angular-route.js"></script> 
 
</head> 
 

 
<body ng-controller="sportsStoreCtrl"> 
 
    <div class="navbar navbar-inverse"> 
 
    <a class="navbar-brand" href="#">SPORTS STORE</a> 
 
    <cart-summary /> 
 
    </div> 
 

 
    <div class="alert alert-danger" ng-show="data.error"> 
 
    Error ({{data.error.status}}). The product data was not loaded. 
 
    <a href="/app.html" class="alert-link">Click here to try again</a> 
 
    </div> 
 
    <ng-view /> 
 
</body> 
 

 
</html>

:ここenter image description here

は、ルートが特定のビューを表示するように定義されるapp.htmlあります。これはとても奇妙です:enter image description here

+0

内のビューの前に「/」を削除するために循環参照があなたの主な問題である、あなたがお互いに依存して2つのコンポーネントがあります。問題を見つけるためにあなたの他のjsを見る必要があります。 – KreepN

+0

ルートを追加する前に作業していたので、他のjsファイルとは何の関係もないと思います。 –

答えて

1

@uamanagerは私に解決策を示した - >右templateUrl

<script> 
    angular.module("sportsStore", ["customFilters", "cart", "ngRoute"]) 
    .config(function ($routeProvider) { 

     $routeProvider.when("/checkout", { 
      templateUrl: "views/checkoutSummary.html" 
     }); 

     $routeProvider.when("/products", { 
      templateUrl: "views/productList.html" 
     }); 

     $routeProvider.otherwise({ 
      templateUrl: "views/productList.html" 
     }); 
    }); 
</script> 
0

変更あなたのルートプロバイダーのためのあなたの構文、あなただけの必要がある1つ$routeProvider

$routeProvider 
    .when('/Book/:bookId', { 
     templateUrl: 'book.html', 
     controller: 'BookController',  
    }) 
    .when('/Book/:bookId/ch/:chapterId', { 
     templateUrl: 'chapter.html', 
     controller: 'ChapterController' 
    }); 

チェックアウトこのcodepen https://codepen.io/CarterTsai/pen/tfjqu

+0

私はあなたに言ったことをしました - >私はまだ同じエラーがあります –

+0

本当ですが、これは彼の問題の修正ではありません。 – KreepN

1

移動を

<script> 
 
    angular.module("sportsStore", ["customFilters", "cart", "ngRoute"]) 
 
     .config(function($routeProvider) { 
 

 
     $routeProvider.when("/checkout", { 
 
      templateUrl: "/views/checkoutSummary.html" 
 
     }); 
 

 
     $routeProvider.when("/products", { 
 
      templateUrl: "/views/productList.html" 
 
     }); 
 

 
     $routeProvider.otherwise({ 
 
      templateUrl: "/views/productList.html" 
 
     }); 
 
     }); 
 
    </script>

を '頭部'の最後まで挿入すると、角度が発生し、ngRouteはまだ読み込まれません。 「body」の下にスクリプトを保存する方が良い

+0

これを試しました - > 3つ以上のエラー –

+0

これらのエラーでスクリーンショットを提供できますか? – uamanager

+0

ちょうど数分pls –

2

angular-route.jsファイルをロードする前にroutesを書き込んでください。したがってを<script></script>の間に移動する必要があります。

これが問題を解決します。

+0

それは本のミスでなければならないファイルを読み込んだ後にルートを定義する構文を私に示すことができますか? –

+0

@DanRomulus更新されました(確認を待っていますが、承認されていれば少し表示されるはずです) – Jay

+0

@DanRomulus詳しくは、Javascriptが同期して実行されています。 ngRouteやcustomFiltersのような、これらのサービスをすべて注入しようとしているのは、あなたがあなたのルートを宣言したスクリプトの後にインポートされているからです。あなたのHTMLにそれらのライブラリがあるだけでどこでも利用できるというわけではないので、あなたは順番に実行する必要があります。他の人に言われているように、レンダリングをブロックしないように、実際にはあなたのスクリプトはすべてあなたの体の最後にあるべきですが、それはまったく別の問題です。 – Jay

関連する問題