Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角度-两个(或更多)相互依赖的服务_Angularjs_Factory_Angularjs Factory - Fatal编程技术网

Angularjs 角度-两个(或更多)相互依赖的服务

Angularjs 角度-两个(或更多)相互依赖的服务,angularjs,factory,angularjs-factory,Angularjs,Factory,Angularjs Factory,我在学习英语方面没有什么问题 假设我有两个工厂: 用户工厂 module.factory('User', ['$http', '$injector', 'Post', function($http, $injector, Post){ User.prototype = { getPosts: function(){ **code** ** Some Post factory operations (Post.getPos

我在学习英语方面没有什么问题

假设我有两个工厂:

用户工厂

module.factory('User', ['$http', '$injector', 'Post', function($http, $injector, Post){
    User.prototype = {
        getPosts: function(){
             **code**
             ** Some Post factory operations (Post.getPostsByUserId(data.id) or something like that)**
        }
    }
}
module.factory('Post', ['$http', '$injector', 'User', function($http, $injector, Post){
    Post.prototype = {
        getUser: function(){
             **code**
             ** Some User factory operations (User.getUserById(data.id) or something like that)**
        }
    }

}
出厂后

module.factory('User', ['$http', '$injector', 'Post', function($http, $injector, Post){
    User.prototype = {
        getPosts: function(){
             **code**
             ** Some Post factory operations (Post.getPostsByUserId(data.id) or something like that)**
        }
    }
}
module.factory('Post', ['$http', '$injector', 'User', function($http, $injector, Post){
    Post.prototype = {
        getUser: function(){
             **code**
             ** Some User factory operations (User.getUserById(data.id) or something like that)**
        }
    }

}
我想我不必说我得到了循环依赖错误,但是如何处理这个问题呢? 我想这样做

<li ng-repeat="user in users">
    {{ user.name }}<br />
    <div ng-repeat="post in user.getPosts()">
        {{post.title}}
    </div>
</li>
我将在我的工厂中使用这些功能,然后考虑:

<li ng-repeat="user in users">
    {{ user.name }}<br />
    <div ng-repeat="post in user.posts">
        {{ getPostById(post).title }}
    </div>
</li>

<li ng-repeat="post in posts">
    {{ post.title }}<br />
    {{ getUserById(post.user_id).name }}
</li>
  • {{user.name}}
    {{getPostById(post.title}}
  • {{post.title}}
    {{getUserById(post.user\u id.name}
  • 正确的方法是什么? 或者我应该扩展baseController?(我不知道如何在angular和JS中扩展对象/原型)

    编辑:处理插值错误和循环相关性:


    EDIT2:Fiddle$rootScope工作:

    你真的试过这个吗?Angular在依赖注入方面非常松散,仅仅因为服务相互引用并不意味着它们是循环的。事实上,从角度上看,它强制执行初始化顺序以防止循环依赖关系。@Claies正如我所写的,我只尝试了一种方法。我想知道如何以一种“适当”的方式处理这个问题,因为我刚刚开始我的Angular冒险之旅;如果您尝试了它并得到了一个错误,那么展示真实的代码和错误将帮助我们解决您的错误。相反,如果这是试图征求与问题相关的不同编码风格的意见,那么这不适合这种格式。这个网站的工作原理是有形的问题和解决方案,而不是推测性的理论。@Claies这里是对
    $rootScope
    :它是有效的,但它是“正确的方式”吗?这不会使我的代码以后变得复杂吗?@Claies这里是fiddle:对于插值和循环依赖性错误,我已经试着像我一开始写的那样使用管理器。