gpt4 book ai didi

angularjs - Angular js 未按预期更新 dom

转载 作者:行者123 更新时间:2023-12-04 09:31:54 24 4
gpt4 key购买 nike

我对此有一个 fiddle ,但基本上它正在做的是对输入到文本框中的地址进行地理编码。输入地址并按下“回车”后,dom 不会立即更新,而是等待文本框的另一次更改。如何在提交后立即更新表格?
我对 Angular 很陌生,但我正在学习。我觉得这很有趣,但我必须学会以不同的方式思考。

这是 fiddle 和我的 controller.js

http://jsfiddle.net/fPBAD/

var myApp = angular.module('geo-encode', []);

function FirstAppCtrl($scope, $http) {
$scope.locations = [];
$scope.text = '';
$scope.nextId = 0;

var geo = new google.maps.Geocoder();

$scope.add = function() {
if (this.text) {

geo.geocode(
{ address : this.text,
region: 'no'
}, function(results, status){
var address = results[0].formatted_address;
var latitude = results[0].geometry.location.hb;
var longitude = results[0].geometry.location.ib;

$scope.locations.push({"name":address, id: $scope.nextId++,"coords":{"lat":latitude,"long":longitude}});
});

this.text = '';
}
}

$scope.remove = function(index) {
$scope.locations = $scope.locations.filter(function(location){
return location.id != index;
})
}
}

最佳答案

您的问题是 geocode函数是异步的,因此在 AngularJS 摘要周期之外更新。您可以通过将回调函数包装在对 $scope.$apply 的调用中来解决此问题。 ,这让 AngularJS 知道运行摘要,因为内容已更改:

geo.geocode(
{ address : this.text,
region: 'no'
}, function(results, status) {
$scope.$apply( function () {
var address = results[0].formatted_address;
var latitude = results[0].geometry.location.hb;
var longitude = results[0].geometry.location.ib;

$scope.locations.push({
"name":address, id: $scope.nextId++,
"coords":{"lat":latitude,"long":longitude}
});
});
});

关于angularjs - Angular js 未按预期更新 dom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15034615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com