Javascript API,angularJS,用于获取数据
我一辈子都没做过angularJS,我迷路了 所以我完成了这个文件,通过时间过滤器从api获取数据 forecast.jsJavascript 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
(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) {/* ... */ }