【问题标题】:Use success and error in angular service or controller在角度服务或控制器中使用成功和错误
【发布时间】:2014-09-29 13:59:49
【问题描述】:

我创建了一个包含此代码的角度服务:

authenticationAPI.login = function() {
            return $http({
                method: 'GET',
                timeout: 10000,
                url:'http://serverName/apiName/Login',
                params : {userName : 'User',
                          password : '12345'}
            });

所以,目前我的“authenticationController”正在使用该服务的“login”方法并自己处理.success和.error。

我选择在控制器内部处理它的原因之一是在遇到错误时决定如何处理来自控制器的 html(显示警报、更改某些元素)。

但是,我是 Angular 新手,不确定这是否是处理请求的最佳实践。

你能帮我弄清楚我是否应该在服务或控制器中处理这个逻辑吗?

【问题讨论】:

  • 就我个人而言,我和你做了同样的事情——返回了承诺,并在对用户显示结果有意义的地方处理了结果。我看不出有什么问题。
  • 问题是..我试图阅读它,但找不到关于最佳实践的描述性帖子。我很高兴知道我选择的方式是否正确。

标签: javascript angularjs separation-of-concerns


【解决方案1】:

我认为这完全取决于处理延迟的逻辑所需要的内容。我都做了——让服务处理延迟,让控制器处理延迟。我认为一个决定因素应该是:

延迟逻辑是否会更新视图/UI?然后在控制器中处理

延迟逻辑是否会更新其他提供者或控制器使用的数据?然后在服务中处理。

在您的情况下,这听起来像是需要处理的视图逻辑,所以我认为控制器很好。

【讨论】:

  • 所以一般来说,你说的不是非黑即白。你说在同一个角度应用程序中,有时在控制器中处理承诺是很好的,在其他情况下在服务中处理。它不必总是在控制器上或在同一个应用程序中始终处于服务状态?
  • 在我看来,是的。没有什么是真正的黑色或白色。我自己在许多应用程序中都使用这两种方法。
猜你喜欢
  • 2015-09-07
  • 2013-07-01
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多