Angularjs 将一个服务注入另一个服务不会';我不在ES6班工作
当服务Angularjs 将一个服务注入另一个服务不会';我不在ES6班工作,angularjs,angularjs-service,Angularjs,Angularjs Service,当服务UserBookService被实例化时,我得到以下错误: 转换拒绝($id:0类型:6,消息:转换出错,详细信息:ReferenceError:BookListService未定义) 下面是我的代码。它是用ES6编写的,由Babelify传输到ES5进行浏览 怎么了?为什么注入在userbookserviceconstructor中不起作用? 据我所知,将一个服务注入另一个服务只需在服务构造函数中将其名称声明为参数即可。它适用于userBooksDefinition常量,但不适用于服务。
UserBookService
被实例化时,我得到以下错误:
转换拒绝($id:0类型:6,消息:转换出错,详细信息:ReferenceError:BookListService未定义)
下面是我的代码。它是用ES6编写的,由Babelify传输到ES5进行浏览
怎么了?为什么注入在userbookservice
constructor中不起作用?
据我所知,将一个服务注入另一个服务只需在服务构造函数中将其名称声明为参数即可。它适用于userBooksDefinition
常量,但不适用于服务。BoooksListService
的注入在路由定义的解析(user books.route.js)中也能很好地工作
user-books.service.js
user-books.module.js
user-books.route.js
BookListService
现在是userbookservice
的一个属性。您必须使用this
:this访问它。BookListService
BookListService
现在是UserBooksService
的一个属性。您必须使用this
:this.BookListService
访问它Samiter:我确信这是一个注入错误,但它是一个引用错误!谢谢。萨米蒂埃:我确信这是一个注入错误,但这是一个引用错误!谢谢
// UserBooksService service definition.
export default class UserBooksService {
constructor(BooksListService, userBooksDefinition) {
this.userBooksDefinition = userBooksDefinition;
this.BooksListService = BooksListService;
}
// Get books of given user.
getUserBooks(user) {
let userBooksIds = this.userBooksDefinition;
let userBooksObjects = {};
// Converts list of books IDs to list of books objects.
for (var bookIdsListName in userBooksIds) {
if (userBooksIds.hasOwnProperty(bookIdsListName)) {
// Fetch and save single list of books.
let idsList = userBooksIds[bookIdsListName];
userBooksObjects[bookIdsListName] = BooksListService.getBooks(idsList);
}
}
return userBooksObjects;
}
}
// userBooks module.
import angular from 'angular';
import uiRouter from '@uirouter/angularjs';
import UserBooksService from './user-books.service';
import userBooksComponent from './user-books.component';
import userBooksDefinition from './user-books-definition';
import userBooksRoute from './user-books.route';
export default angular
.module('app.components.userBooks', [
uiRouter
])
.config(userBooksRoute)
.service('UserBooksService', UserBooksService)
.constant('userBooksDefinition', userBooksDefinition)
.component('userBooks', userBooksComponent)
.name;
// Router configuration for userBooks module.
export default ($stateProvider) => {
$stateProvider.state({
name: 'userBooks',
url: '/user-books',
views: {
'content': {
component: 'userBooks'
}
},
resolve: {
userBooks: (UserBooksService, BooksListService) => {
// This injects UserBooksService fine, printing the object to the console.
console.log(`BooksListService: ${BooksListService}`);
// TODO: Should get and pass logged in user.
return UserBooksService.getUserBooks(undefined);
}
}
})
};