请求 REST 服务

Request REST service

本文关键字:服务 REST 请求      更新时间:2023-09-26

我目前在javascript和angular.js框架方面处于初学者水平。我的问题是我无法使ngResource工作。

普伦克

我的代码:

.JS:

var geolocationControllers = angular.module('geolocationControllers', ['ngResource']);
geolocationControllers.controller('geolocationControllers', ['$scope', '$resource',
  function($scope, $resource) {
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(function(position) {
        $scope.$apply(function() {
          $scope.position = $resource('http://nominatim.openstreetmap.org/reverse?format=json', {}, {
            query: {
              method: 'GET',
              params: {
                lat: position.coords.latitude,
                lon: position.coords.longitude
              }
            }
          });
          console.log($scope.position);
        });
      });
    }
  }
]);

.HTML:

<div class="container" ng-controller="geolocationControllers">
    <label for="location">Your location:</label>
    <input type="text" id="location" size="120" ng-model="position"/>
</div>

这会输出到控制台,并且也在输入元素中:

function Resource(value) {          shallowClearAndCopy(value || {}, this);        }

你可以做这样的事情...这将起作用,我在浏览器中对其进行了测试...您将不得不重命名您需要的零件...

.HTML

<!DOCTYPE HTML>
<html ng-app="myApp">
<head>
<meta charset="utf-8">
<title>untitled</title>
<script type="text/javascript" src="angular.min.js"></script>
<script type="text/javascript" src="app.js"></script>
</head>
<body ng-controller="myController">
    <label for="location">Your location:</label><br>
    <input type="text" id="location" size="120" ng-model="positionText"/>
</body>
</html>

和Javascript

var myApp = angular.module('myApp', []);
myApp.controller('myController', function ($scope, $http) {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function (curPosition) {
            var curLongi = curPosition.coords.longitude;
            var curLati = curPosition.coords.latitude;
            $http.get('http://nominatim.openstreetmap.org/reverse?format=json&lat='+curLati.toString()+'&lon='+curLongi.toString()).success(function (data) {
                    alert(JSON.stringify(data));
                    $scope.positionText = data.display_name;
            });

        });
    } 
});