最近项目中,需要用户输入经纬度信息,因为数据库设计的时候,不可能分三个字段来存储这种信息,只能用double类型来进行存储。
计算公式 double r=度+分/60+秒/3600
<script>
var app = angular.module("app", \[\], function () {
console.log("test");
});
app.controller("test", \["$scope", function ($scope) {
$scope.longitude = 113.211;
console.log($scope.longitude);
$scope.$watch("longitude",function(newValue,oldValue) {
console.log(newValue);
});
}\]);
app.directive("coordTransform", function () {
return {
restrict: 'E',
scope: {
ngModel:"="
},
templateUrl: function () {
return "LongitudeAndLatitudeTemplate.html";
},
link: function (scope, elements, attrs) {
if (angular.isUndefined(scope.ngModel)) {
return "";
}
scope.obj = {
du: null,
fen: null,
miao: null
};
var model = scope.ngModel.toString();
var str = model.split(".");
//度
var du = str\[0\];
//分
var tp = "0." + str\[1\];
var res = String(tp \* 60);
var str1 = res.split(".");
var fen = str1\[0\];
//秒
var tp1 = "0." + str1\[1\];
var miao = tp1 \* 60;
scope.obj = {
du: du,
fen: fen,
miao:miao
};
scope.$watch("obj", function (newValue, oldValue) {
if (angular.isUndefined(oldValue) || angular.isUndefined(newValue)||oldValue===newValue) {
return;
}
var f = parseFloat(scope.obj.fen) + parseFloat(scope.obj.miao / 60);
scope.ngModel = parseFloat(scope.obj.du) + parseFloat(f / 60);
// scope.$apply(scope.ngModel);
},true);
}
}
});
</script>
下面是模板的html文件
手机扫一扫
移动阅读更方便
你可能感兴趣的文章