我是AngularJs的新手。我有一種情況需要爲多個控制器獲取相同的數據。所以,我開始知道爲此使用angularJs服務並從控制器調用該服務。在第一次競爭執行後調用第二個Angularjs控制器
現在,當我從兩個控制器調用此服務時,服務會被擊中兩次。我已將數據緩存在服務中,但該服務仍會向服務器生成兩個Ajax請求。
如何處理這種情況?
我是AngularJs的新手。我有一種情況需要爲多個控制器獲取相同的數據。所以,我開始知道爲此使用angularJs服務並從控制器調用該服務。在第一次競爭執行後調用第二個Angularjs控制器
現在,當我從兩個控制器調用此服務時,服務會被擊中兩次。我已將數據緩存在服務中,但該服務仍會向服務器生成兩個Ajax請求。
如何處理這種情況?
每次調用服務方法時,無論您從哪裏調用它,它都將運行。因此,如果您有兩個控制器,並且分別從每個控制器調用服務方法,則該服務方法將運行兩次。
我已經在服務中緩存了數據,但服務仍生成 兩個ajax請求到服務器。
如果你談論的是,當你在兩個控制器注入一個服務不調用$http
請求兩次:
這SO post似乎是實現也許類似的東西:
1服務與$ HTTP請求和2控制器消耗返回的承諾。
在這種情況下,第二個Controller在使用服務的返回數據(並且不再調用$ http請求)之前正在等待broadcast
事件 - 請參閱此實現是否有助於您的應用程序。 GL!
所以....你從兩個不同的位置調用服務方法,並想知道爲什麼它被調用兩次,並且爲什麼它正在運行兩次而感到困惑。它是否正確? –
標記爲低質量,這不是一個angularJS特定問題,而是軟件設計的一般問題。 –
你能從服務和控制器發佈你的代碼嗎? (做一個jsfiddle,只有相關的行)如果你關心的只是'$ http'被調用兩次,那麼這可能是可以解決的......另一種可能的方法可能是使用'promise chaining' –