我有NewsService
和PersonService
以及Person
和NewsItem
的模型。以下是不包括服务的简化表示。
//angular service to expose Person
var Person = function(data) {
angular.copy(data, this);
//some other initialisation
}
Person.prototype.getNews = function() {
//fetch news
.then(function(newsItems) {
return newsItems.map(function(newsItemData){
newsItemData.author = new Person(newsItemData.author);
return new NewsItem(newsItemData);
});
});
}
//Angular service to expose NewsItem
var NewsItem = function(data) {
angular.copy(data, this);
//some other initialisation
}
NewsItem.prototype.getComments = function() {
//fetch comments
.then(function(commentsData){
return comments.map(function(commentData) {
commentData.author = new Person(commentData.author);
return new Comment(commentData);
});
});
}
//Angular services that reference these objects
NewsService
PersonService
NewsItem和Person相互引用,因为从各自API获取的数据包括应由另一个对象实例化的数据。有许多服务和模型相互引用,我遇到循环依赖的问题迫使我在其他地方实例化对象,我想避免。我无法想到一个优雅的解决方案,可以真正使用你的帮助。