Javascript API,angularJS,用于获取数据

Javascript API,angularJS,用于获取数据,javascript,angularjs,api,Javascript,Angularjs,Api,我一辈子都没做过angularJS,我迷路了 所以我完成了这个文件,通过时间过滤器从api获取数据 forecast.js (function() { angular.module('application').factory('Forecast', ['$http', '$q', function($http, $q){ var ApiAddr = "api.com/"; forecast.getResults = function(timeStart, tim

我一辈子都没做过angularJS,我迷路了

所以我完成了这个文件,通过时间过滤器从api获取数据

forecast.js

        (function() {

angular.module('application').factory('Forecast', ['$http', '$q', function($http, $q){

  var ApiAddr = "api.com/";


  forecast.getResults = function(timeStart, timeEnd){
    // We map application varaible names with API param names
    var httpParams = {
      type: "global",
      time: "minute",
      tsmin: timeStart,
      tsmax: timeEnd
    };
    return $http.get(apiAddr, {
      params: httpParams,
      cache: true
    }).then(function(data){
      return data;
    },
            function(response){
              console.log(
          "HTTP request "+ApiAddr+
          " (with parameters tsmin="+httpParams.tsmin+", tsmax="+httpParams.tsmax+
          ", type="+httpParams.type+", time="+httpParams.time+
          (httpParams.motive ? ", motive="+httpParams.motive : "")+
          (httpParams.vector ? ", vector="+httpParams.vector : "")+
          (httpParams.media ? ", media="+httpParams.media : "")+
          ") failed with "+response.status
        );
        return $q.reject(response);
      }
    );
}];
但我不知道如何为它制作一个控制器适配器。我能做什么类型的控制器? 每个示例都基于一个固定的json文件,没有参数

此外,我想在HTML中输入时间过滤器,但我完全不知道该怎么做。我看到的例子是获取数据,而不是发送数据


Ps:我已经为此做了两天的研究,我一生中从未做过前端编程。

只需将工厂注入控制器,如下所示:

var app = angular.module('application');
app.controller('myController',
      ['$scope', 'Forecast', function($scope, Forecast) { /* access to Forecast*/}]);
或使用部件(清洁剂):

(函数(){
角度模块('应用程序',[]))
.factory('Forecast',['$http','$q',函数($http,$q){
var apiaddress='api.com';
var forecast={};
forecast.getResults=函数(timeStart、timeEnd){
//我们将应用程序变量名映射为API参数名
var httpParams={
键入:“全局”,
时间:“分钟”,
tsmin:timeStart,
tsmax:timeEnd
};
返回$http.get(apiaddress{
参数:httpParams,
缓存:真
}).然后(函数(结果){
返回结果数据;
});
};
收益预测;
}])
.controller('SampleCtrl',['$scope','Forecast',函数($scope,Forecast){
$scope.forecastReport='';
$scope.getForecast=函数(){
Forecast.getResults($scope.timeStart,$scope.timeEnd)
.然后(功能(报告){
$scope.result=报告;
}).catch(函数(err){
$scope.result='';
console.error('无法获取预测报告:'+err);
});
};
}]);
})();

开始时间:
时间结束:
得到预测

预测结果: {{forecastReport | json}}
是否要将
httpParams
发送给api?是。数据(时间)来自一个HTML页面,我想让controller操作获得的数据,以便在HTML页面上输出。请注意,这些数据已经过时,不仅不再受支持,而且如果使用angular 1.6或更高版本,它们也不再包括在内。相反,使用
然后
进行一次或两次回调。至于如何处理
预测工厂
我建议您使用组件,而不是控制器。请参阅。我将立即编辑我的代码。@ToToTorAndMimine可以标记为已解决。如果您对这个答案感到满意,那么就有一个小问题:在控制器中初始化timeStart和timeEnd,或者我希望在html页面中输入值。我已经做了这样的事情:input type=“datetime local”ng model='timeStart'>更新。现在
Forecast.getResults
获取html页面中输入字段传递的值,如何访问Json的数据?如果我写{{forecastReport.attribute1}},它什么也不写……你能把你的示例响应粘贴到这里吗?
app.component('myComponentCtrl', {
       templateUrl: 'template.html'
       controller: myComponentCtrl
})


myComponentCtrl.$inject = ['$scope', 'Forecast'];

function myComponentCtrl($scope, Forecast) {/* ... */  }