仅在需要AngularJS时才注入模块依赖项(如插件)

Mos*_*Feu 9 html javascript angularjs angularjs-injector angular-ui-grid

我有2页(我不使用angular's routing- 这个约束).

在其中一个中我想使用ui-grid该演示中的指令:

var app = angular.module('myApp', ['ui.grid']);
app.controller('mainCtrl', function($scope) {
  $scope.myData = [
    {
        "firstName": "Cox",
        "lastName": "Carney",
        "company": "Enormo",
        "employed": true
    },
    {
        "firstName": "Lorraine",
        "lastName": "Wise",
        "company": "Comveyer",
        "employed": false
    },
    {
        "firstName": "Nancy",
        "lastName": "Waters",
        "company": "Fuelton",
        "employed": false
    }
  ];
});
Run Code Online (Sandbox Code Playgroud)
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.js"></script>
<script src="http://ui-grid.info/release/ui-grid-unstable.js"></script>
<link rel="stylesheet" href="http://ui-grid.info/release/ui-grid-unstable.css" type="text/css">

<div ng-app="myApp">
  <div ng-controller="mainCtrl">
    <div id="grid1" ui-grid="{ data: myData }" class="grid"></div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果有办法ui-grid在任何情况下都不向应用程序注入依赖项,但仅在我需要它时.

就像是:

app.controller('mainCtrl', function($scope) {
   app.$inject('ui-grid');
});
Run Code Online (Sandbox Code Playgroud)

更新

我试着这样做:

var ui_grid = $injector.get('ui-grid');
Run Code Online (Sandbox Code Playgroud)

但我有一个错误:

未知提供者:ui-gridProvider < - ui-grid

http://errors.angularjs.org/1.2.26/$injector/unpr?p0=ui-gridProvider%20%3C-%20ui-grid

S.K*_*ski 5

Core Angular API不提供此功能.ocLazyLoad是用于在Angular中延迟加载模块和组件的流行库.

您可以在他们的页面上找到更多信息:https: //oclazyload.readme.io

或者GitHub存储库:https: //github.com/ocombe/ocLazyLoad