是不是内联阵列注释DI与AngularJS中的$ routeProvider兼容?

时间:2015-01-20 02:46:12

标签: javascript angularjs dependency-injection coffeescript

我的代码看起来像这样

angular
.module('main', ['ngRoute'])
.config(['$routeProvider',
    ($routeProvider) ->
    $routeProvider
    .when '/',
      templateUrl: 'homePage/homePage.html'
      controller: 'MainCtrl'
])

angular.module('main').controller('MainCtrl',
 ['$scope' , ($scope) ->
    $scope.test = {}])

浏览器将获得Error: [ng:areq] Argument 'MainCtrl' is not a function, got Object

但如果我不在MainCtrl中使用内联数组依赖注入并重写它,请执行以下操作:

angular.module('main').controller('MainCtrl',
 ($scope) ->
    $scope.test = {})

然后一切顺利。有没有人有这个想法?谢谢!

1 个答案:

答案 0 :(得分:2)

由于错误消息非常明确,问题不在于$routeProvider,您可能需要对其进行重组。另请注意,配置块必须具有一个功能。

首先创建模块,然后注册控制器并配置:

angular
.module('main', ['ngRoute']);

然后使用它或链接,即

angular.module("main", ["ngRoute"]).controller("MainCtrl", [
  "$scope"
  ($scope) ->
    return $scope.test = {}
]).config [
  "$routeProvider"
  ($routeProvider) -> //Check this
    return $routeProvider.when("/",
      templateUrl: "homePage/homePage.html"
      controller: "MainCtrl"
    )
]

否则,根据脚本的顺序,您尝试在应用main之前创建一个控制器,直到它存在。

另请注意,您还需要包含angular-router脚本。

<强> Demo