2015-10-27 48 views
4

我打上面的错误:试图注入一个未知的注入:service:titleService用下面的代码:创建自定义Emberjs服务错误:试图注入一个未知的注入:`服务: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}} 

我错过什么?

+4

只需重新启动Ember服务器。 – AnthonyC

+0

@AnthonyC为我解决了它。男人,通过文件膛线看看我错了什么语法... – Skitterm

回答

4

你必须遵循灰烬的命名约定 - 如果你指的是您的服务为titleService,那么你想要该文件为title-service.js,而不是titleService.js

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