创建自定义Emberjs服务错误:尝试注入未知注入:`service:titleService`

时间:2015-10-27 10:42:29

标签: ember.js ember-cli

我点击上面的错误:尝试使用以下代码注入未知注入:service:titleService

// initializers/titleService
export default {
  name: 'titleService',
  initialize: function(container, application) {
    application.inject('route', 'titleService', 'service:titleService');
  }
};

// services/titleService.js
import Ember from 'ember';
export default Ember.Service.extend({
  title(name) {
    this.set('title', name);
  }
});

// routes/login.js
import Ember from 'ember';
export default Ember.Route.extend({
  titleService: Ember.inject.service(),
  actions: {
    didTransition: function() {
      this.set('titleService.title', 'Login Page');
    }
  }
});

// templates/application.hbs
<div class="page-header">
   <h1>{{titleService.title}}</h1>
</div>
{{outlet}}
我错过了什么吗?

2 个答案:

答案 0 :(得分:5)

您必须遵循Ember的命名惯例 - 如果您将服务称为titleService,那么您希望文件为title-service.js,而不是titleService.js

答案 1 :(得分:1)

似乎您在尝试将route注入TitleService时遇到问题。这可能是一个错字,应该是router而不是route。如果您想在服务中使用路由器,您也可以注入-routing服务,但要小心,因为它是私有API的一部分。

示例:

import Ember from 'ember';

export default Ember.Service.extend({
  routing: inject.service('-routing'),

  someFunc() {
    const router = get(this, 'routing').router;
    // Do something with the router here
  }
});

可在此主题中找到更多信息:http://discuss.emberjs.com/t/routing-as-a-service/8550/3