【问题标题】:understanding services and controllers in angularjs [duplicate]了解angularjs中的服务和控制器[重复]
【发布时间】:2016-03-12 03:15:19
【问题描述】:

我是 AngularJS 的新手(特别是使用 ionic)。

我正在尝试构建一个下载“帖子”然后根据帖子 user_id 下载“用户”的应用。

我有一个“帖子”服务,它通过 API 调用通过 Posts.get() 下载所有帖子;功能。它起作用了,帖子又回来了。我的控制器设置了一个 arraylist $scope.posts = Posts.all() ,它只返回帖子。

现在使用 ng-repeat,我可以在每个帖子 ID 进入时将其发布到屏幕上,效果很好。

我感到困惑的地方是我现在如何下载与 post.user_id 关联的每个用户并将它们附加在一起。

如果我将 Users 模型注入到 Posts 中,反之亦然,以便他们可以相互更新和调用函数,它会给我一个“循环依赖”错误。

如果我尝试将 $scope 注入模型中,以便调用控制器上的函数来连接它们,则会引发“Unknown Provider $scopeProvider”错误。

在 AngularJS 中处理这种情况的正确方法是什么?

下载帖子,从该信息下载用户,然后将信息显示在帖子和该帖子的用户的屏幕上。

任何帮助或提示都会很棒!提前致谢!

【问题讨论】:

  • 您应该 ask a new question 使用更具体的问题来命名。也许是“如何关联来自不同服务的用户 ID 和用户数据。”

标签: javascript angularjs ionic-framework


【解决方案1】:

听起来你只需要一个单向依赖,你应该能够毫无问题地将用户注入帖子。

如果您还需要根据用户获取帖子,您可以做的另一件事是拥有依赖于帖子和用户的第三个服务,并将调用这两者。

例如你可以有

// posts.js
angular.module('myapp.posts', []).factory('Posts', ...)
// users.js
angular.module('myapp.users', []).factory('Users', ...)
// users-for-posts.js
angular.module('myapp.users-for-posts', ['myapp.posts', 'myapp.users'])
       .factory('UsersForPosts', function(Posts, Users) {
          // ...
       })

(您不必有单独的模块,但我会推荐它)

【讨论】:

  • 正确,我可以将用户注入帖子。我试过这个。所以现在帖子被下载了,然后它在用户中调用一个函数来下载用户。所以现在我有一个包含所有帖子的数组和一个包含所有用户的数组。现在我该如何显示这个?我在帖子中的 ng-repeat 帖子中尝试了类似的方法:{{ Users.find(post.user_id).user_id }} 但这似乎不起作用。
  • angular 中的 http 请求总是返回一个承诺,这就是您现有代码无法正常工作的原因。您的服务中应该有类似getPosts.then(function (posts) {posts.forEach(function(p){ User.find(p.user_id).then(function(u){p.user = u})}) }}) 的内容
猜你喜欢
  • 1970-01-01
  • 2014-08-29
  • 2016-04-29
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
  • 2018-01-08
  • 2015-05-17
  • 2014-09-14
相关资源
最近更新 更多