gpt4 book ai didi

angularjs - AngularFire ObjectFactory 子对象导致循环依赖

转载 作者:行者123 更新时间:2023-12-01 06:27:53 26 4
gpt4 key购买 nike

使用 AngularFire,我正在扩展对象工厂,以便封装数据并允许特定功能,如 official tutorial 中所述。 .我有一个如下的数据结构:

{
'articles': {
'article-asd876a': {
title: 'abc',
text: 'lorem ipsum ...',
comments: {
'comment-ad4e6a': true,
'comment-dsd9a7': true
}
}
},
'comments': {
'comment-ad4e6a': {
text: 'comment text1',
articleId: 'article-asd876a'
},
'comment-dsd9a7': {
text: 'comment text2',
articleId: 'article-asd876a'
}
}
}

现在我希望能够做到这一点:
var article = new Article(8); // Returns the object created by my object factory, fetching data from firebase
var comments = article.getComments(); // Returns an array of type Comment
var firstText = comments[0].getText();
var article2 = comments[0].getArticle(); // article2 === article

但这对我来说在很多层面上都失败了。其中之一是:在文章中,我只能存储评论 ID,因此必须使用 new Comment(commentId) 重新创建评论对象,为此我需要将评论注入(inject)文章。评论也是如此,所以我最终得到了一个循环依赖文章 -> 评论 -> 文章。以下 fiddle 显示了该行为: http://jsfiddle.net/michaschwab/v0qzdgtq/ .

我究竟做错了什么?这对 Angular 来说是一个糟糕的概念/结构吗?谢谢!!

最佳答案

What am I doing wrong? Is this a bad concept/structure for angular? Thanks!!



您正在创建循环依赖项。

I can do var Comment = $injector.get('Comment'); to avoid the error, is that the best solution?



我看到两个解决方案: -

1)懒惰注入(inject)液(你自己建议的)

这是避免 AngularJS 中那些循环依赖的最佳解决方案。虽然查看 AngularFire 文档,但您进入了一个未知领域,因为 AngularFire 中的一些内容本质上是实验性的。

这是您的工作 fiddle
var Comment = $injector.get('Comment');

您本质上是懒惰地注入(inject)您的引用资料。

http://jsfiddle.net/yogeshgadge/ymxkt6up/5/

2)模块运行 block :

使用此选项,您可以将这些依赖项注入(inject)您的工厂,而不是使用 $injector。

关于angularjs - AngularFire ObjectFactory 子对象导致循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26209446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com