現在、私はangularjsの理解を助けるプロジェクトに取り組んでいます!私は現在、コントローラからサービスにパラメータを渡す方法に固執しています。AngularJsでコントローラからサービスにparamを渡す方法
私のプログラムでは、ユーザーがボタンをクリックして入力を入力すると、「GetForecastByLocation」という関数が作成されました。そこから私は入力を受け取り、service.jsのhttp呼び出しに渡したいと思います。
元々、$ http.getはAPI urlの長い巨大な文字列にありましたが、私は周りを探索しましたが、文字列の一部を変更しようとするときにパラメータを使用すると思われます。現在のところ、パラメータは特定の都市にハードコードされていますが、新しい入力を受け取り、vm.cityの値を$ http.get呼び出しに渡したいと思います。
いずれかが役に立ったら、私は大いに感謝します。ありがとうございました!ファクトリメソッドに引数を渡す
controller.js
var app = angular.module('weatherApp.controllers', [])
app.controller('weatherCtrl', ['$scope','Data',
function($scope, Data) {
$scope.getForecastByLocation = function(myName) {
$scope.city = myName;
Data.getApps($scope.city);},
Data.getApps(city)
.then(function(data)){
//doing a bunch of things like converting units, etc
},
function(res){
if(res.status === 500) {
// server error, alert user somehow
} else {
// probably deal with these errors differently
}
}); // end of function
}]) // end of controller
service.js
.factory('Data', function($http, $q) {
var data = [],
lastRequestFailed = true,
promise;
return {
getApps: function() {
if(!promise || lastRequestFailed) {
promise = $http.get('http://api.openweathermap.org/data/2.5/weather?',{
params: {
q: Tokyo,
}
})
.then(function(res) {
lastRequestFailed = false;
data = res.data;
return data;
}, function(res) {
return $q.reject(res);
});
}
return promise;
}
}
});
getApps' 'にパラメータを追加しないのはなぜ?工場は 'getApps:function(city){...'のようになり、 'Data.getApps($ scope.city)'のようなコールサイト – Will
こんにちは@wilusdaman!申し訳ありませんが、私はangularjsにはとても新しいです。あなたが完全なコードを表示することができれば/私は非常にそれを感謝する精巧!ありがとうございました! //あなたのコードでは、まだparamsが必要でしょうか?私が正しく理解していれば、関数(都市)からの価値はq:都市に記入されますか? – hiswendy