【问题标题】:ng-model data bing not working properlyng-model 数据 bing 无法正常工作
【发布时间】:2014-08-21 14:39:14
【问题描述】:

我正在尝试使用新的地理代码值更新字段,但即使模型已更新,它也不会与第一次调用绑定。我的控制器代码如下:

function TheReportCtrl($scope) {
    $scope.code = [];
    $scope.code.lat = "19.2555500";
    $scope.getCode = function () {
        var geocoder = new google.maps.Geocoder();
        var address = "12323 Barker Cypress Rd, Cypress, Texas"
        geocoder.geocode({
            'address': address
        }, function (results, status) {
            if (status === google.maps.GeocoderStatus.OK) {
                $scope.code.lat = results[0].geometry.location.k;
            } else {
                console.log("Geocoding failed: " + status);
            }
        });
    }
} 

我的代码缺少什么?

Here is the JsFiddle Code Sample

【问题讨论】:

  • 你需要在$scope.code.lat = results[0].geometry.location.k;之后调用$scope.$apply();。 AngularJS 不知道你改变了范围。
  • 感谢 Sergiu Paraschiv 不幸的是,您的回答已在评论中。 :)

标签: javascript angularjs angularjs-ng-model


【解决方案1】:

你错过了一个 $scope().$apply();

http://fiddle.jshell.net/yfLek2cw/

原始小提琴中的 Angular CDNLink 也不起作用。原因是,地理位置回调不是从角度完成的。因此脏检查机制在那里不起作用。要再次开始脏检查,你必须调用 $scope.$apply();

这是所有外部回调函数都需要的,即使这些回调在角度范围内。自动 $apply 仅适用于角度回调,如 $timeout 或 $q 服务

【讨论】:

    【解决方案2】:

    您的代码实际上正在运行,您只需使用$apply() 方法更新$scope。这是一个小提琴:

    http://fiddle.jshell.net/7v2dfLsv/3/

    【讨论】:

    • 把 $scope.apply() 改成 $scope.$apply() 就可以了。
    • 谢谢,修正了错字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 2016-08-24
    • 2014-09-30
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多