是否可以使用angularAMD在运行时延迟加载并将角度模块注入应用程序?

时间:2014-06-12 12:13:55

标签: javascript angularjs angular-amd

在定义应用时,我将ng-grid作为依赖项:

var app = angular.module('myApp', ['ngGrid']);

但并非我的所有视图和控制器都需要ngGrid,所以我在考虑是否可以在定义需要它的控制器时加载和注入ngGrid?

我尝试过这样的事情,但它不起作用:

app.js:

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

ProductListCtrl.js:

define(['app', 'ng-grid'], function (app) {
    'use strict';

    app.register.controller('ProductListCtrl', ['$scope', 'ngGrid', function ($scope) {
        name = $injector.get('ngGrid')
        $scope.name = name
    }]);

});

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

angularAMD提供了ngload RequireJS插件,允许您加载现有的AngularJS模块。将ngload添加到main.js,然后执行:

define(['app', 'ngload!ng-grid'], function (app) { ... }

有关详细信息,请参阅documentation