Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 工厂未返回控制器中的对象_Javascript_Angularjs - Fatal编程技术网

Javascript 工厂未返回控制器中的对象

Javascript 工厂未返回控制器中的对象,javascript,angularjs,Javascript,Angularjs,我想把工厂的结果传给我的控制器 到目前为止,我一直在失败,工厂内部的一切似乎都很好,我可以对结果进行console.log,它显示的很好 有什么建议吗 我的工厂目前: mainApp.factory('statusFinder',['jsonQueryStations','timeConverter',函数(jsonQueryStations,timeConverter){ var findTheTime=timeConverter.getTime(); var生成器=函数(){ 返回jsonQ

我想把工厂的结果传给我的控制器

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

有什么建议吗

我的工厂目前:

mainApp.factory('statusFinder',['jsonQueryStations','timeConverter',函数(jsonQueryStations,timeConverter){
var findTheTime=timeConverter.getTime();
var生成器=函数(){
返回jsonQueryStations.stationData().then(函数(结果){
if(result.station[findTheTime]>result.station.Average){
返回“站点正忙”;
}否则{
返回“车站安静”;
}
});
}
返回{
状态:函数(){
返回生成器();
}
}
}])
我的控制器现在看起来是这样的:

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

u可以从控制器而不是工厂获得承诺。只需在工厂中返回
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";
        }
    });
}])

谢谢,我以前也做过类似的事情,我现在只是想把我的功能从控制器中移出,以便整理一下,这难道不是我一个人可以从工厂做的吗?在你的问题中,http返回一个承诺,控制器不必等待承诺,因为承诺从控制器捕获。这是避免反模式的正确方法。它将在承诺内创建另一个自定义承诺,并将mess@Blimeys美好的确保标记为回答此问题有帮助