我想抓住一些带有内容的JSON文件,并将其用于其他控制器。为此,我知道我应该创建一个抓取json文件的工厂。我的问题是我不知道如何让工厂返回deityData。
这是我在工厂中想要的代码:
app.controller("dataContainer", function($scope,$http){
$http.get("./data/deitys/data.json").then(function (response) {
$scope.myData = response.data;
for(var i = 0; i < $scope.myData["deitys"].length;i++){
var dataString = "./data/deitys/" + $scope.myData["deitys"][i] +".json";
$http.get(dataString).then(function (response_) {
var deityData = response_.data;
$scope.deitys[deityData.deityName] = deityData;
});
}
});
答案 0 :(得分:0)
让我们为此创建一项服务,例如 deityService 。
angular.service("deityService", () => {
this.deityData = undefined;
});
在所有需要该数据的控制器中,添加 deityService 作为依赖项。
完成在 dataContainer 控制器中获取数据后,像这样设置 deityData 并发出一个事件,让所有其他人知道数据已设置
this.deityService.deityData = fetched_data;
this.deityService.emit("DEITY_DATA_SET");
为所有控制器添加一个侦听器
this.deityService.on("DEITY_DATA_SET",() => {
// now you can do console.log(this.deityService.deityData);
}
);