我想创建一个服务,该服务可以注入到使用名为Contact
的实体的不同控制器中。
我有一个.js文件,其中已配置了所有内容,并按如下所示将服务导入其中:
import ContactService from './service/ContactService';
import ContactsController from './ContactsController';
//...
angular.module(name,[
//...
]).service('contactService', ContactService)
.controller('contactsController', ContactsController)
//...
在ContactsController.js中,我想使用这样的服务:
export default ($scope, contactService) => {
$scope.contacts = contactService.get();
}
然后在我的ContactService.js中,我尝试执行此操作,但是它不起作用
var Contact;
class ContactService {
constructor($resource) {
Contact = $resource('/contacts/:id');
}
get(id) {
return Contact.get(id);
}
get() {
return Contact.query();
}
//...
}
ContactService.$inject = ['$resource'];
export default ContactService;
我怎样才能很好地实现ContactService.js,以便它使用ES6类和$resource
来工作?
答案 0 :(得分:1)
构造函数需要使用this
对象:
̶v̶a̶r̶ ̶C̶o̶n̶t̶a̶c̶t̶;̶
class ContactService {
constructor($resource) {
̶C̶o̶n̶t̶a̶c̶t̶ ̶=̶ ̶$̶r̶e̶s̶o̶u̶r̶c̶e̶(̶'̶/̶c̶o̶n̶t̶a̶c̶t̶s̶/̶:̶i̶d̶'̶)̶;̶
this.Contact = $resource('/contacts/:id');
}
get(id) {
return this.Contact.get(id);
}
getAll() {
return this.Contact.query();
}
//...
}
ContactService.$inject = ['$resource'];
export default ContactService;
此外,由于代码使用类,请避免在控制器中使用$ scope:
class ContactsController {
constructor (contactService) {}
this.contactService = contactService;
}
$ngInit () {
this.contacts = this.contactService.get();
}
}
ContactsController.$inject = ['contactService'];
export default ContactsController;