首頁  >  問答  >  主體

angular.js - angular下,只請求一次遠端json數據,便可在多個控制器下使用

1.目的:期望該遠端資料(json.json)需要重複利用,希望只請求一次json.json數據,可以在多個控制器中反覆使用
2.問題:路由每跳轉一次,就會重新請求一次'json.json'

3.程式碼如下

巴扎黑巴扎黑2735 天前545

全部回覆(3)我來回復

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-15 17:08:02

    可以試試看這樣:

    factory("$remoteData",['$http', '$q', function($http, $q){
        var self = this;
        
        function getData() {
            if (self.myData) {
                return $q(function(resolve, reject) {
                    resolve(self.myData);
                });
            } else {
                return $http.get("../json/json.json").then(function(response){
                    self.myData = response.data;
                    return self.myData;
                });
            }
        }
        return {getData: getData}
    }]);
    

    再controller中這麼用:

    .controller("FirstController",function($scope,$remoteData,$localData){
        $remoteData.getData().then(function(myData) {
            //use myData
        });
    });

    回覆
    0
  • 滿天的星座

    滿天的星座2017-05-15 17:08:02

    用service 單例的,把物件參考掛在service物件上,後面直接取這個物件

    回覆
    0
  • 怪我咯

    怪我咯2017-05-15 17:08:02

    Angular擁有根作用域$rootScope,你可以將各個控制器公用的資料持久化到根作用域裡,並透過適當的方式讓其只獲取一次。

    回覆
    0
  • 取消回覆