2015-05-18 24 views
-2

我在Angular控制器中有一组重复的API调用。不影响视图的角度数据:使用指令,对象还是函数?

相关数据当然是API URI,POST或GET,一些头数据和JSON对象。 API调用总是返回一个JSON对象。

我开始使用一个指令,但似乎最相关的,它可以与$范围的数据(例如在View)。这些数据在雷达下运行,最终可能会生成视图中使用的数据,但通常不会,通常也不会以抽象的方式生成数据。

所以:这是否意味着我不应该使用指令?如果我不使用指令,使用JS对象(似乎更加模块化)或函数(似乎更易于变量)来处理此代码会更好吗?

是的,我得到的对象可以包含的功能,但功能也可以包含回调如此...寻找那种这里的“最佳做法”。在模块性和灵活性方面。

+0

使用工厂,服务或提供商。这是组合功能的角度方式,并不直接与视图相关。 –

+0

@DavinTryon因此提供者将会被拒绝,因为“只有当你想在应用程序启动之前公开一个必须在应用程序范围内进行配置的API时,你才应该使用提供者配方”。如果你想写出来,我会给你“工厂或服务”的答案。 –

+0

工厂和服务是由供应商提供的。提供者是创建支持Angular的对象的最*灵活的方式。 –

回答

1

您应该为此创建Angular服务。 https://docs.angularjs.org/guide/services

您的服务将包含一个方法,让我们说“getResults”,它将进行API调用并返回数据或承诺($http)。然后,您可以为您的控制器注入服务,并使用该方法获取数据并将其分配给$scope

角度的服务肯定是首选,以更广泛的JavaScript的一个,因为它可以让你利用角的范围和其他类似的东西更大的优势。在Angular的工厂,服务和提供商之间,一个服务最符合你想要做的事情,因为一个工厂太基本了,一般用于解决较小的问题,同时使用提供者 - 正如它在Angular docs - “只有当您想要公开一个必须在应用程序启动之前进行的应用程序范围配置的API时。”这不是你想要做的。

+1

这不是问题的答案。你能说*为什么*一个服务是最好的对象(而不是一个工厂或提供商或http拦截器或...)? –

+0

@DavinTryon你为什么不投票答复人的答案,并告诉他们,他们没有回答这个问题,而没有自己留下答案? –

+0

@JacobFinamore :)向下投票用于表示答案对其他人无用。如果答案是好的,那么我会赞成。回答者可以选择改进答案,然后我将撤消downvote。这只是提供反馈的方式。这与我想回答无关。 –