Angular JS没有更新ng-bind值

时间:2014-12-15 11:19:16

标签: javascript angularjs

我想开始说我是一个非常新手的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;
        }
    }
}

提前致谢。

0 个答案:

没有答案