[英]What is the best way in AngularJS to get data using ajax
我有一個名為MoviesListsCtrl
的控制器,該控制器使用ng-controller應用於html文檔中的3個元素。
如果我在控制器內部使用$http
服務,則對相同數據將執行3次。
用ajax一次檢索json數據並將其用於控制器的最佳方法是什么。
如果它是GET請求,則可以緩存響應,這樣就只進行一個調用,所有后續調用都將從緩存中拉出。
$http({
url: "someUrl",
cache: true
}).success(function(){
// do something
}).error(function(){
// do something else
});
由於每個元素上都有代碼,因此代碼仍將運行多次,但只會進行一次http調用。
使用Angular服務或工廠。 您可以在服務內部抽象$http
調用,以便您的控制器始終使用相同的接口。
就像是:
angular.module('myModule')
.service('myService', function ($http, $q) {
var myData = null;
this.get = function (params) {
return myData
? $q.when(myData)
: $http.get('http://example.com/myEndpoint', params)
.success(function (data) {
myData = data;
});
};
});
這是基本的,但符合總體思路。 (您可能希望保留對您的諾言的引用,並將其傳遞回被調用方,以便在諾言解決之前發生的多個請求不會引起新的HTTP請求。)
之后,您可以將服務注入控制器,只需調用它即可獲取所需的數據。 這樣做的好處是,您將始終調用相同的方法來獲取數據。 希望這有幫助,祝你好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.