2017-09-05 12 views
1

コントローラーをすべてロードしたくありません。私はコントローラを動的にロードすることに関するいくつかの記事を見つけましたが、成功しませんでした。私は試しました:AngularJSコントローラーを動的に追加する

var premaApp = angular.module('premaApp', ['ngRoute']); 
premaApp.config(function ($routeProvider) { 
$routeProvider 
    .when('/', 
    { 
     templateUrl: '/Home/Test', 
     controller: 'personController', 
     resolve: '/app/controllers/product.controller.js' 
    }); 
}); 

私はエラーが発生しました。これを行う正しい方法は何ですか?

+0

をルーティング角度で異なるビューとコントローラを使用する方法であるが、これを確認します。https://stackoverflow.com/questions/28184616/lazy-load-template-and-controller-in-angularを-ui-router –

+0

もっとシンプルなものがほしいと思っていました。(でも、行く方法のようですね) –

+0

ええ、angularjsでは角度よりも複雑です:( –

答えて

0

私はあなたの問題はresolveにあると思います。間違った方法で使っているからです。

私はこれでした:

$routeProvider 
    .when('/', 
    { 
      templateUrl: "newsView.html", 
      controller: "newsController", 
      resolve: { 
       message: function(messageService){ 
        return messageService.getMessage(); 
      } 
     } 
    }) 

を解決するには、ルートが変更される前に、成功裏に解決しなければならない1つ以上の約束が含まれています。これは、ビューを表示する前にデータが使用可能になるのを待つことができ、コントローラ内のモデルの初期化を単純化するため、コントローラの代わりにコントローラに初期データが渡され、データをフェッチする必要があるからです。

あなたにもこれを行うことができます:

$routeProvider 
     .when('/', 
     { 
       templateUrl: "newsView.html", 
       controller: "newsController", 
      } 
     }) 

resolveパラメータはオプションです。

私はそれが助けてくれることを願っています!

0

これは、あなたが

.when('/', { 
    templateUrl: 'partials/homepage.html', 
    controller: 'Controller1' 
}) 
.when('/test', { 
    templateUrl: 'partials/test.html', 
    controller: 'Controller2' 
}) 
.when('/page/:pageId', { 
    templateUrl: 'partials/page.html', 
    controller: 'Controller2' 
}); 
+0

これは、コントローラの数が多い場合、これは最適ではありません。 –

関連する問題