目前,我有以下服务,可以在我的角应用程序的其他位置填充表格。
更新
'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) {
});
答案 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; });
}