2015-05-18 26 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。這只是提供反饋的方式。這與我想回答無關。 –