繁体   English   中英

来自2个jsons Angular的$ http.get

[英]$http.get from 2 jsons Angular

我尝试从2个json获取数据:

第一个'names.json':

  [
        {
            "name": "AAAAAA",
            "down": "False"

        },

        {
            "name": "BBBBBB",
            "down": "45%"
        },
        {
            "name": "CCCCC",
            "down": "12%"
        }
]

第二个'data.json'

[
         {
            "data": "25-12-2014"
        }
]

Javascript:

app.service('service', function($http){
        this.getNames = function () {
            var data =  $http.get('data,json', { cache: false});
            var names =  $http.get('names.json', { cache: false});
            return names;
            return data;
            };
        });

app.controller('FirstCtrl', function($scope, service) {
var promise = service.getNames();
            promise.then(function (data) {
            $scope.datas = data.data;       
            console.log($scope.datas);
            });
        })

的HTML

div ng-controller="FirstCtrl"
     <table>
        <tbody>
          <tr ng-repeat="name in datas">
            <td>{{name.name}}</td>
            <td>{{name.data}}</td>
          </tr>
        </tbody>
      </table>
    </div>

在我的console.log和表中,我只看到json“ names.json”中的数据,但我也想看到来自“ data.json”中的数据。

您应该一起返回两个诺言,在一个函数中不能有两个返回。 在这种情况下, $q.all会有所帮助。

//inject $q in service function
this.getNames = function () {
    var data =  $http.get('data,json', { cache: false});
    var names =  $http.get('names.json', { cache: false});
    return $q.all([data, names]);
};

控制者

var promise = service.getNames();
promise.then(function (data) {
    $scope.datas = data[0].data;
    $scope.names = data[1].data;
});

将您的代码更改为此

app.service('service', function($http) {
    return{
        getData : function(){
            return $http.get('data,json', { cache: false });
        },
        getNames : function(){
            return $http.get('names.json', { cache: false });
        }
    }

});

app.controller('FirstCtrl', function($scope, service, $q) {
    $q.all([service.getData(), service.getNames()]).then(function(response){
        $scope.data = response[0].data;
        $scope.names = response[1].data:
    });
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM