Я пытаюсь создать простую веб-приложение погоды с помощью angularJS. Я использую API погоды, и я хочу создать окно ввода, чтобы страница загружала погоду в соответствии с городом, который вводит пользователь.AngularJS с использованием http.get с ng-model
Вот мой код:
HTML:
<!DOCTYPE html>
<html>
<head>
<script src="./node_modules/angular/angular.js"></script>
<script src="./myApp3.js"></script>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<h1>Weather Center</h1>
<div ng-app="myApp" ng-controller="myCtrl">
<form>
Please enter your location: <input type="text" ng-model="location">
</form>
<p id="field">
Location: <span id="result">{{ myData.data.name }}, {{ myData.data.sys.country }}</span>
</p>
<p id="field">
Current Conditions: <span id="result">{{ myData.data.weather[0].description }}</span>
</p>
<p id="field">
Temperature: <span id="result">{{ myData.data.main.temp | kelvinToFahrenheit | number: 0 }}°F</span>
</p>
<p id="field">
Pressure: <span id="result">{{ myData.data.main.pressure }} mb</span>
</p>
<p id="field">
Wind Speed: <span id="result">{{ myData.data.wind.speed }} mph</span>
</p>
</div>
</body>
</html>
JS:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
$http.get("http://api.openweathermap.org/data/2.5/weather?q=" + $scope.location + ",uk&appid=44db6a862fba0b067b1930da0d769e98")
.then(function(response) {
$scope.myData = response;
}, function(response) {
$scope.myData = "Something went wrong";
});
});
app.filter('kelvinToFahrenheit', function() {
return function(kelvin) {
return (parseFloat(kelvin) - 273.15) * 1.80 + 32.00;
};
});
я это работает без каких-либо поле ввода, и я только что "Лондон", где «$ scope.location "находится внутри http.get(). Но когда я использую этот код и набираю Лондон в поле ввода, он не работает.
Заранее благодарен!
бы я назвал $ scope.watch() до или после http.get()? Кроме того, какие другие аргументы после $ scope.watch ('location', ... –