$ http.get以角度加载外部json

时间:2013-08-21 17:26:54

标签: json angularjs

目前,我有以下服务,可以在我的角应用程序的其他位置填充表格。

更新

'use strict';

    angular.module('projyApp')
      .service('data', function data() {
        // AngularJS will instantiate a singleton by calling "new" on this function             

            var getAllPeeps = function () {
                return peeps;
            }

            var insertPeep = function(peep) {
                peeps.push(peep);
            }
            var getPeep = function(peep) {
                var foundPeep;
                if (peep.firstname) {
                    peeps.forEach(function (pps){
                        if (pps.firstname == peep.firstname) {
                            foundPeep = pps;
                        }
                    });
                } else if (peep.lastname) {
                    peeps.forEach(function (pps){
                        if (pps.lastname == peep.lastname) {
                            foundPeep = pps;
                        }
                    });
                } else if (peep.inumber) {
                    peeps.forEach(function (pps) {
                        if (pps.inumber == peep.tagid) {
                            foundPeep = pps;
                        }
                    });
                }

                if (foundPeep) {
                    return foundPeep;
                } else {
                    return "Error";
                }
            }

            var getDataFromServer = function () {
                //Fake it.
                var peeps = [
                    {firstname:'Buster', lastname:'Bluth', tagid:'01'},
                    {firstname:'John', lastname:'McClane', tagid:'02'},
                    {firstname:'Mister', lastname:'Spock', tagid:'03'}
                ];

                return peeps;
            }

            var peeps = getDataFromServer();

            return {
                getAllPeeps : getAllPeeps,
                insertPeep : insertPeep,
                getPeep : getPeep
            }
      });

显然这很有效,但是我希望'peeps'数组能够保存外部json文件中的对象。

如何从外部json文件加载'peeps'时保持功能,如下所示:

$http.get("../../TestData/peeps.json").success(function(data) {

            });

3 个答案:

答案 0 :(得分:1)

Angular从get go开始双向绑定。所以,如果你有一个

$scope.var = function() {
$http.get(blah).success($scope.peeps = data.peeps;);
};

它会更新视图上的$ scope.peeps。 $ scope.var一般是一个按钮。

答案 1 :(得分:0)

通常我会以角度返回$ http承诺。来自服务的调用者可以使用成功来做任何想做的事情。 但为了保持向后兼容性,你可以试试这个:

var getDataFromServer = function () {
        var peeps = [];
        $http.get("../../TestData/peeps.json").success(function(data) {
             peeps.push.apply(peeps,data);
        });

        return peeps;
    }

所以你将返回一个最初为空的数组。但是它将被json数组填充。

答案 2 :(得分:0)

function myController($scope, $http){
    $http.get(url).success(function(data){ $scope.people = data; });
}