【发布时间】:2017-04-30 20:30:27
【问题描述】:
我正在使用窗口加载脚本来捕获经纬度并将它们传递给隐藏的输入值。
$(function() {
window.onload = getLocation;
var geo = navigator.geolocation;
function getLocation() {
if (geo) {
geo.getCurrentPosition(displayLocation);
} else {
alert("Oops, Geolocation API is not supported");
}
}
function displayLocation(position) {
var lang = position.coords.longitude;
var lat = position.coords.latitude;
console.log(lat);
document.getElementById('txtlat').value = lat;
document.getElementById('txtlang').value = lang;
}
});
然后我尝试使用 angular ng-model 捕获这些输入的值,但它似乎不起作用。就像它是空的,它不知道输入字段已填充任何想法如何解决它?
//controller of the register html
$scope.user = {};
$scope.register = function(form) {
$scope.submitted = true;
if (form.$valid) {
Auth.createUser({
name: $scope.user.name,
email: $scope.user.email,
password: $scope.user.password,
lang: $scope.user.lang,
lat: $scope.user.lat
})
.then(function() {
// Account created, redirect to home
$state.go('main');
})
.catch(function(err) {
err = err.data;
console.log(err);
$scope.errors = {};
// Update validity of form fields that match the mongoose errors
angular.forEach(err.errors, function(error, field) {
form[field].$setValidity('mongoose', false);
$scope.errors[field] = error.message;
});
});
} else {
console.log("form not work")
}
console.log($scope.user);
};
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<form class="form" name="form" ng-submit="register(form)" novalidate>
<input type="text" name="txtlang" class="form-control" id="txtlang" ng-model="user.lang">
<input type="hidden" name="txtlat" class="form-control" id="txtlat" ng-model="user.lat">
<button class="btn btn-inverse btn-lg btn-register" type="submit">
Sign up</button>
</form>
当我尝试注册时,输入值不会被捕获和保存,除非我在 onload 函数完成默认捕获之后修改输入值(如果有意义的话)?
【问题讨论】:
-
在这个问题中没有关于angularjs的东西,angular部分在哪里?
-
我使用 ng-model 捕获输入字段的部分? :) {{ }} 应该写这部分以使其更清晰猜对了
-
请edit您的问题并将其添加到那里,没有伤害:)
-
好的,谢谢
标签: javascript jquery angularjs geolocation