工厂不在控制器中返回对象

时间:2017-03-17 17:40:26

标签: javascript angularjs

我正试图将工厂的结果输出到我的控制器。

到目前为止,我一直在失败,工厂内部的一切似乎都很好,我可以制作console.log的结果,它显示得很好。

任何指针?

我的工厂目前:

mainApp.factory('statusFinder', ['jsonQueryStations', 'timeConverter', function(jsonQueryStations, timeConverter){
  var findTheTime = timeConverter.getTime();
  var generator = function(){
      return jsonQueryStations.stationData().then(function(result){
      if (result.station[findTheTime]>result.station.Average){
        return "Station is busy";
        } else{
        return "Station is quiet";
        }
      });
    }
  return {
    status: function(){
      return generator();
    }
    }
}])

现在我的控制器看起来像这样:

mainApp.controller('stuff', ['$scope', 'statusFinder', function($scope, statusFinder){
 var data = statusFinder.status();
 $scope.testing = data;
}])

1 个答案:

答案 0 :(得分:0)

你可以从控制器而不是工厂中获得承诺。只需在工厂中返回jsonQueryStations.stationData()

mainApp.factory('statusFinder', ['jsonQueryStations', 'timeConverter', function(jsonQueryStations, timeConverter){
   var generator = function(){
      return jsonQueryStations.stationData()
   }
   return {
    status: function(){
      return generator();
    }
   }
}])

现在在控制器中捕捉这样的承诺

mainApp.controller('stuff', ['$scope', 'statusFinder', function($scope, statusFinder) {
    var findTheTime = timeConverter.getTime();
    statusFinder.status().then(function(result) {
        if (result.station[findTheTime] > result.station.Average) {
            $scope.testing = "Station is busy";
        } else {
            $scope.testing = "Station is quiet";
        }
    });
}])