来自服务器的角度加载数据和在控制器中发布

时间:2018-03-17 17:44:41

标签: javascript angularjs

我想抓住一些带有内容的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;
        });                                         
    }

});   

1 个答案:

答案 0 :(得分:0)

  1. 让我们为此创建一项服务,例如 deityService

    angular.service("deityService", () => {
      this.deityData = undefined;
    });
    
  2. 在所有需要该数据的控制器中,添加 deityService 作为依赖项。

  3. 完成在 dataContainer 控制器中获取数据后,像这样设置 deityData 并发出一个事件,让所有其他人知道数据已设置

    this.deityService.deityData = fetched_data;
    this.deityService.emit("DEITY_DATA_SET");
    
  4. 为所有控制器添加一个侦听器

    this.deityService.on("DEITY_DATA_SET",() => {
      // now you can do console.log(this.deityService.deityData);
      }
    );