2016-07-07 20 views
0

したがって、角度ルーティングを使用するようにウェブサイトを設定していますが、私は本当に奇妙な動作をしています。私がルートにアクセスすると、タブがクラッシュするまでコントローラ内のコードが無期限に実行されているようです。ここに私のルーティングは次のとおりです。AngularJsコントローラコードが無期限に実行されています

angular.module(app.appName) 
    .config([ 
     '$routeProvider', function($routeProvider) { 
      $routeProvider 
       .when('/', { 
        controller: 'homeController', 
        caseInsensitiveMatch: true 
       }) 
       .when('/MyWishlists', { 
        templateUrl: 'assets/html/areas/MyWishlists/myWishlists.html', 
        controller: 'myWishlistsController', 
        caseInsensitiveMatch: true 
       }) 
       .when('/Login', { 
        templateUrl: 'assets/html/areas/login/login.html', 
        controller: 'loginController', 
        caseInsensitiveMatch: true 
       }) 
       .otherwise({ redirectTo: '/' }); 
     } 
    ]); 

そして、ここでは私のloginControllerです:

angular.module(app.appName) 
    .controller('loginController', ['$scope', 
     function ($scope) { 
      console.log('login'); 
     }]); 

私はクロームがそれを終了するまで、それは何度もそのconsole.log('login');を実行しますhttp://localhost:50925/Loginを訪問するとき。私はここで何をしているのですか? これが原因です。以前は見たことがありませんか?

私の連結ファイルと関係がありますか?私はgulpを使用してすべてのコントローラをcontrollers.jsに結合しています。

編集:私はちょうど新しいコントローラ、homeControllerの作成を試して、それを私のルートに追加しました。そして、定義されているどちらのルートでも全くhomeControllerを使用しません。

angular.module(app.appName) 
    .config([ 
     '$routeProvider', function($routeProvider) { 
      $routeProvider 
       .when('/', { 
        controller: 'homeController', 
        caseInsensitiveMatch: true 
       }) 
       .when('/Home', { 
        controller: 'homeController', 
        caseInsensitiveMatch: true 
       }) 
       .when('/MyWishlists', { 
        templateUrl: 'assets/html/areas/MyWishlists/myWishlists.html', 
        controller: 'myWishlistsController', 
        caseInsensitiveMatch: true 
       }) 
       .when('/Login', { 
        templateUrl: 'assets/html/areas/login/login.html', 
        controller: 'loginController', 
        caseInsensitiveMatch: true 
       }) 
       .otherwise({ redirectTo: '/' }); 
     } 
    ]); 

angular.module('wishlist') 
    .controller('homeController', ['$scope', 
     function ($scope) { 
      console.log('home'); 
     }]); 

答えて

0

この問題は解決しました。私の問題は、ASP.NETを使用していますが、私はMVCパイプラインを完全にバイパスするメソッドを使用しています。これを行うために、私はIndex.cshtmlを作成し、ファイルを提供するようにアプリケーションに指示する必要がありました。ただし、この時点では、web.config書き換えルールに特に記載されていないすべてのファイルがHTMLとしてブラウザに返されます。私はassets/jsフォルダを通過させることができましたが、HTMLではなくHTMLテンプレートをAngularで提供する代わりに、ブラウザへの応答として再コンパイルされたページ全体を取得していました。新しいルートをレンダリングするために、ブラウザーが最終的にそれを終了するまで何度もこれをやり続けることになりました。つまり、問題を解決するために、web.configのルールに追加する必要がありました。

<rewrite> 
    <rules> 
    <rule name="AngularJS Conditions" stopProcessing="true"> 
     <match url="(wwwroot/.*|assets/min.*|assets/html.*|bower_components/.*|api/.*)" /> 
     <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> 
     <action type="None" /> 
    </rule> 
    <rule name="AngularJS Wildcard" enabled="true"> 
     <match url="(.*)" /> 
     <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> 
     <action type="Rewrite" url="index.cshtml" /> 
    </rule> 
    </rules> 
</rewrite> 
+0

意味があります。私は、java spring mvcアプリケーションの開発中に同じ問題に直面しました。 web.xmlが最初にspring URLマッピングを読み込んで使用するとき、角度ルーティングはそれによって隠されていました。 –

0

角度モジュールを定義するときにngRouteを注入する必要があります。ここにはLinkがあり、ngRouteと希望を定義するのに役立ちます。

+0

こんにちは、返信いただきありがとうございます。私はモジュールに 'ngRoute'を注入したと確信していますが、できるときは確認します。 –

+0

私のモジュールに 'ngRoute'を注入しました:' angular.module(app.appName、[ 'ngRoute'、 'ngResource' ]); ' –

0

あなたのコントローラーの機能に名前があり、いくつかのエラーがあるようです。それを確認することができます。このようなものを追加する必要があります。

angular.module('myApp',['ngRoute']); 

Angularjsは、使用するモジュールを挿入する必要があります。すべての依存関係は、使用する前に注入する必要があります。

他のすべてはうまく見えます。

+0

こんにちは、私は 'app.appName'を次のように設定しました。以前のjsファイル内のグローバル変数です。このアプローチは他の多くのプロジェクトでも機能していますが、コントローラでモジュール名を明示的に定義しようとします。 –

関連する問題