AngularJS动态添加控制器

时间:2017-09-05 19:14:17

标签: angularjs

我不想加载我的所有控制器。我发现了一些关于动态加载控制器但没有成功的文章。我试过了:

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

但我收到了一个错误。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

我认为您的问题出在resolve,因为您以错误的方式使用它。

我这样做了:

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

解析包含一个或多个必须在路由更改之前成功解析的promise。这意味着您可以在显示视图之前等待数据可用,并简化控制器内部模型的初始化,因为初始数据是提供给控制器而不是控制器需要外出并获取数据。

您也可以这样做:

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

resolve参数是可选的。

我希望有所帮助!

答案 1 :(得分: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'
});