簡體   English   中英

AngularJS中使用ajax獲取數據的最佳方法是什么

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM