2017-06-01 4 views
0

routeProviderを追加した小さなアプリを作成し、ContentViewを変更しました。私のさまざまなhtmlsとの切り替えは、私のhtmlの車と機能を使用することができます。

var app = angular.module("mainApp", ['ngRoute']); 

angular.module("mainApp").config(
     [ '$routeProvider', '$locationProvider', 
       function($routeProvider, $locationProvider) { 

       $locationProvider.hashPrefix(''); 

       $routeProvider.when("/", { 
        templateUrl : './page1.html', 
        controller : 'con1' 
       }).when("/stuff", { 
        templateUrl : './page2.html', 
        controller : 'con2' 
       }).when("/404", { 
        templateUrl : "./errorPage.html" 
       }) 
       // else 404 
       .otherwise({ 
        redirectTo : "/404" 
       }); 
      } ]); 

私は、機能を追加しました:私のコントローラが初期化モードにあるとき

this.$onInit = function() {console.log("test"); }; 

は、ものを行います。 (注:他のプロジェクトでもこのパターンを追加しましたが、この新しいプロジェクトではこれをロードしません)。

なぜそれがうまくいかないのですか?

+0

同じコードは1つのプロジェクトでのみ動作しますが、他のプロジェクトでは動作しませんか?どのコントローラに '$ onInit'ライフサイクルフックを追加しましたか、コントローラのコードを投稿できますか?あなたの質問を少しはっきりさせることができますか? [this](https://jsfiddle.net/aygqcgeb/2/)のように見えますか? –

+0

同じパターンを実装した私の他の(最初のプロジェクト)は、asingされたhtmlがロードされている場合、コントローラのinit関数を呼び出します。そして、このプロジェクトはそれを呼びません。ワイアードの一種。 – Offset

+0

これは手動で 'this。$ onInit();'のように手動で呼び出されませんか?私の答えと[jsfiddle](https://jsfiddle.net/aygqcgeb/9/)の例を確認しましたか? –

答えて

0

申し訳ありませんが早く回答を書いてください。はい、ルーティング・プロバイダがコントローラを呼び出す場合、lifecyleはinitを呼び出さないでしょう。

私はinitをトリガーするmanuelleによって解決しました。私はコントローラを本体(コンテナ)にdata-ng-controller = "myController"で追加することでこれを行いました

これはpageloadでinitを呼び出します。ハッキーの種類が、それは素晴らしい作品です。

関連する問題