我想开始说我是一个非常新手的angular.js开发人员,只使用它约2个月,制作基本的测试应用程序。现在我得到了我正在实施的第一个小项目,我可以解决问题。
问题是我有2组变量,我正在从控制器更新。这些变量正在从回调函数中更改,因此angular不知道它们已更改。我已经读过,如果在角度上下文之外更改变量,则不会更新View。
第二个问题是我使用控制器As 方法来初始化控制器,因为我知道这是使控制器(最佳实践)的方法。使用这种类型的控制器初始化,我无法访问 $ scope 。
解决方案:这是否需要实现为指令以实现我想要做的或其他模式?
HTML代码:
<div class="container-fluid navbar-fixed-top text-center" ng-controller="geoloc as GCController">
<div class="row">
<div class="col-xs-12">
{{GCController.lat}}
</div>
<div class="col-xs-12">
{{GCController.lon}}
</div>
</div>
</div>
角度控制器文件
angular
.module('geoapp')
.controller('geoloc', geoloc);
geoloc.$inject = [];
/* @ngInject */
function geoloc() {
var vm = this;
vm.activate = activate;
vm.title = 'geoloc';
vm.lat = 0;
vm.lon = 0;
vm.error = false;
test = 0;
activate();
////////////////
function activate() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
console.log("Setting" + position.coords.latitude + " " + position.coords.longitude);
vm.lat = position.coords.latitude;
vm.lon = position.coords.longitude;
});
}
else {
vm.error = true;
}
}
}
提前致谢。