我点击上面的错误:尝试使用以下代码注入未知注入: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}}
我错过了什么吗?
答案 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