在配置块中注入服务或工厂时出错

时间:2017-06-24 13:57:05

标签: javascript angularjs

我正在尝试使用angular 1.6创建一个博客,除了我创建服务并注入配置文件外,一切正常。测试指令工作正常,只在注入myService服务/工厂时中断。

app.coffee

app = angular.module 'dts',['ngRoute']

app.service 'myService', ->
    this.asd = ""

app.directive 'ngHello', ->
    return {
        restrict:'E'
        replace: true
        template: "<h1>Hola mundo</h1>"
        link: (scope,element,attrs)->

    }

config.coffee

app = angular.module 'dts'

app.config ["$locationProvider","$routeProvider","myService", ($locationProvider,$routeProvider,myService)->

    $routeProvider

        .when "/",
            controller: "mainCtrl"
            templateUrl: "/app/views/index.html"

        .when "/blog",
            controller: "blogCtrl"
            templateUrl: "/app/views/blog/index.html"

        .when "/blog/post/:id",
            controller: "blogCtrl"
            templateUrl: "/app/views/blog/single.html"

        .when "/contact",
            controller: "contactCtrl"
            templateUrl: "/app/views/contact.html"

        .otherwise '/'



    $locationProvider.html5Mode
        enabled: true
        requireBase: false
]

脚本包含

script(src="/js/libs/angular.min.js")
script(src="/app/modules/angular-route.min.js")
script(src="/app/app.js")
script(src="/app/services/slugs.js")
script(src="/app/config.js")
script(src="/app/controllers/main.js")
script(src="/app/controllers/blog.js")

我做错了什么?

我在1.6版本上搜索了有关服务或工厂的问题或弃用,但我找不到任何内容。我将角度降级到1.5.6并且也不起作用。

我尝试将服务/工厂移动到app文件,但也打破了(在我在services.js上创建它之前)

2 个答案:

答案 0 :(得分:1)

你必须在配置中注入myServiceProvider,你不能在配置功能中注入服务

答案 1 :(得分:0)

来自文档:

  

模块加载&amp;依赖

     
      
  • 配置块 - 在提供商注册和配置阶段执行。 只能将提供程序和常量注入配置块。这是为了防止服务在完全配置之前意外实例化。
  •   
     

— AngularJS Developer Guide - Modules (Loading & Dependencies)

服务无法创建或更改路由表。

另一方面,服务可以在路由表的resolve函数中注入,因为在应用程序的运行阶段会调用这些函数。