微小时的角度注射

时间:2016-03-20 18:05:48

标签: javascript angularjs

这段代码可以工作但不会缩小......我该怎么办? 我收到此错误错误:

$注射器:strictdi 需要明确的注释

// app.js

angular
 .module('app', [route, 'templates']);

angular
 .module('app')
 .config(config);

function config($routeProvider, $locationProvider) {
 $routeProvider

.when('/', {
  templateUrl: 'home.html',
  controller: 'HomeController',
  controllerAs: 'vm'
});

$locationProvider.html5Mode(true);
}


angular
.module('app')
.controller('HomeController', HomeController);

function HomeController() {
 var vm = this;
 vm.header = 'Home';
}

// home.html

{{ vm.header }}

3 个答案:

答案 0 :(得分:3)

Angular尝试通过参数名称隐式加载依赖项,只要参数名称与要加载的依赖项相同,它就可以正常工作。

例如,

function config($routeProvider, $locationProvider) {
    ...
}

这将触发angular以使用$ routeProvider和$ locationProvider注入函数但是如果你将代码缩小到这个会发生什么:

function config(a, b) {
    ...
}

Angular现在会尝试使用a和b(不存在)注入函数。因此,您需要明确告诉angular要注入的依赖项。您可以使用内联括号表示法来执行此操作:

// bracket notation
angular
    .module('app')
    .config(['$routeProvider', '$locationProvider', config]);

function config($routeProvider, $locationProvider) {
    ...
}

...或者使用$ inject属性:

// $inject property
angular
    .module('app')
    .config(config);

config.$inject = ['$routeProvider', '$locationProvider'];
function config($routeProvider, $locationProvider) {
    ...
}

答案 1 :(得分:0)

由于您使用的是严格模式(最常见的是'在代码中使用严格的'),您必须明确注入依赖项。

你可以这样做

config.$inject = [$routeProvider, $locationProvider];

答案 2 :(得分:0)

你可以试试这个

angular
 .module('app')
  .config(config);

  config.$inject = ['$routeProvider','$locationProvider'];
  function config($routeProvider, $locationProvider) {
$routeProvider

 .when('/', {
  templateUrl: 'home.html',
  controller: 'HomeController',
  controllerAs: 'vm'
     });

    $locationProvider.html5Mode(true);
}

 })();

   (function () {
  'use strict';

      angular
        .module('plunker')
        .controller('HomeController',HomeController);


      HomeController.$inject = [];
      function HomeController() {

       var vm = this; 
            }

         })();