2017-09-05 118 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(); 
      } 
     } 
    }) 

下決心包含必須成功解決之前的路線會改變一個或多個承諾。這意味着您可以在顯示視圖之前等待數據可用,並簡化控制器內模型的初始化,因爲初始數據被提供給控制器,而不是控制器需要出去並獲取數據。

你可以做到這一點還有:

$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

這requries所有控制器被加載,即使你只是訪問如果你有很多控制器,這不是最佳的。 –