通过角度服务加载JSON文件

时间:2016-12-04 21:50:18

标签: javascript angularjs json

我想调用Angular服务函数" getDecks()"来自控制器" menuBarCtrl"。我想在getDecks()返回我的JSON文件的内容之后将文件的内容存储在本地$ scope变量中。

然而,我只得到一个未定义的'如果我尝试在控制台中显示该值。

ajapp.controller('MenuBarCtrl', function($scope, $http, CardProvider) {

    $scope.decks = CardProvider.getDecks();

    console.log($scope.decks);

});

ajapp.service('CardProvider', function($http) {

    this.getDecks = function(){

        var json;
        $http.get('content/SetList.json').success(function(data, status){

            json = data;
        }).error(function (data, status) {
            alert("File Request Failed ["+status+"]");
        });

        return json;
    }
});

1 个答案:

答案 0 :(得分:0)

问题不是有角度的,而是JS异步性。

这似乎是你想要实现的目标:

ajapp.controller('MenuBarCtrl', function($scope, $http, CardProvider) {
    CardProvider.getDecks()
    .then(function(data) {
        $scope.decks = data;
    })
    .catch(function (data, status) {
        /* handle error*/
    });
});

ajapp.service('CardProvider', function($http) {
    this.getDecks = function(){
        return $http.get('content/SetList.json');
    }
});