javascript - 内联数组注释 DI 与 AngularJS 中的 $routeProvider 不兼容吗?

标签 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 中的内联数组依赖注入(inject)并像这样重写:

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

然后一切正常。有人对此有想法吗?谢谢!

最佳答案

由于错误消息非常清楚地表明问题不在于 $routeProvider,您可能需要重组它们。另请注意,配置 block 必须具有功能。

首先创建模块,然后注册 Controller 和配置:

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 存在之前创建一个 Controller 。

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

<强> Demo

关于javascript - 内联数组注释 DI 与 AngularJS 中的 $routeProvider 不兼容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28036945/

相关文章:

javascript - jQuery Validate 没有绑定(bind),没有错误

angularjs - ngtable的HTML页面中的 '$data'是什么

angularjs - 拖放元素到指定区域然后输出坐标

javascript - 不能对 socket.io 使用非匿名方法, "listener"参数必须是一个函数

javascript - 内联构建工具提示注释而不是在文档上准备好吗?

javascript - 为 Bootstrap Carousel 创建容器

AngularJs:数组推送替换其他元素

javascript - 如何使用Nest.js在开发中提供MockService?

spring - Spring 请求和 session 范围有什么区别?

Laravel 单元测试自动依赖注入(inject)不起作用?