Javascript 为什么这个简单的ng绑定和ng显示不起作用?
我试图显示从谷歌的Place服务获取的数据。出于某种原因,我可以将对象记录到控制器内部的控制台中,但在HTML文件中,指令根本没有被填写。因为我没有使用映射,所以我为节点传入了一个div元素。在线上似乎没有关于以这种方式显示属性的指南,所以我尝试将对象分配给范围变量并以这种方式显示Javascript 为什么这个简单的ng绑定和ng显示不起作用?,javascript,angularjs,google-maps,Javascript,Angularjs,Google Maps,我试图显示从谷歌的Place服务获取的数据。出于某种原因,我可以将对象记录到控制器内部的控制台中,但在HTML文件中,指令根本没有被填写。因为我没有使用映射,所以我为节点传入了一个div元素。在线上似乎没有关于以这种方式显示属性的指南,所以我尝试将对象分配给范围变量并以这种方式显示$scope.location将完全可行的对象打印到控制台屏幕,但ng bind或ng show指令无法生成任何内容 controllers.js Controllers.controller("LocationCon
$scope.location
将完全可行的对象打印到控制台屏幕,但ng bind
或ng show
指令无法生成任何内容
controllers.js
Controllers.controller("LocationController", ["$routeParams", "$scope", "$location", function($routeParams, $scope, $location) {
if (!$routeParams.placeId) return $location.path("/");
var PlaceService;
$(document).ready(function() {
PlaceService = new google.maps.places.PlacesService(document.getElementById("locationContainer"));
});
PlaceService.getDetails({ placeId: $routeParams.placeId }, function(place, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
$scope.location = place;
return console.log($scope.location);
}
return console.log("ERROR: " + status);
});
}]);
location.html:
<div class="container-fluid">
<div class="row">
<div class="col-xs-12">
<div class="col-xs-4">
<img ng-src="{{ location.icon }}">
</div>
<div class="col-xs-8">
<p ng-bind="location.name"></p>
</div>
</div>
</div>
</div>
<div id="locationContainer"></div>
控制台输出:
对象{address\u components=[9],adr\u address=“USA”,格式化的{u address=“935 W威斯康星大道,密尔沃基,WI 53233,USA”,更多…}
这是您的异步调用。
替换
与
异步调用不会在angular$digest事件中发生。所以我们需要告诉angular绑定这个值。这方面有官方文件。
if (status == google.maps.places.PlacesServiceStatus.OK) {
$scope.location = place;
return console.log($scope.location);
}
$scope.$apply(function(){
if (status == google.maps.places.PlacesServiceStatus.OK) {
$scope.location = place;
return console.log($scope.location);
}
}