2015-05-21 52 views
4

我是AngularJs的新手。我有一種情況需要爲多個控制器獲取相同的數據。所以,我開始知道爲此使用angularJs服務並從控制器調用該服務。在第一次競爭執行後調用第二個Angularjs控制器

現在,當我從兩個控制器調用此服務時,服務會被擊中兩次。我已將數據緩存在服務中,但該服務仍會向服務器生成兩個Ajax請求。

如何處理這種情況?

+0

所以....你從兩個不同的位置調用服務方法,並想知道爲什麼它被調用兩次,並且爲什麼它正在運行兩次而感到困惑。它是否正確? –

+0

標記爲低質量,這不是一個angularJS特定問題,而是軟件設計的一般問題。 –

+0

你能從服務和控制器發佈你的代碼嗎? (做一個jsfiddle,只有相關的行)如果你關心的只是'$ http'被調用兩次,那麼這可能是可以解決的......另一種可能的方法可能是使用'promise chaining' –

回答

0

每次調用服務方法時,無論您從哪裏調用它,它都將運行。因此,如果您有兩個控制器,並且分別從每個控制器調用服務方法,則該服務方法將運行兩次。

0

我已經在服務中緩存了數據,但服務仍生成 兩個ajax請求到服務器。

如果你談論的是,當你在兩個控制器注入一個服務不調用$http請求兩次:

SO post似乎是實現也許類似的東西:
1服務與$ HTTP請求和2控制器消耗返回的承諾。

在這種情況下,第二個Controller在使用服務的返回數據(並且不再調用$ http請求)之前正在等待broadcast事件 - 請參閱此實現是否有助於您的應用程序。 GL!

相關問題