【发布时间】:2016-04-06 22:59:45
【问题描述】:
我正在用 ionic/angular 制作一个网络应用程序,用户可以在其中从以模式弹出的 Google 地图或从 Google 地图自动完成搜索框中选择位置。
为了获得最佳用户体验,我希望将用户在地图上选择的地址输入到搜索框中。
如果我先在地图上选择一个位置,然后通过在有效的搜索框中键入来更改位置。但是如果我先在搜索框中输入一个位置,然后尝试在地图上选择一个位置,输入框中的文本将保持不变。
我认为这与使自动完成工作所需的 ionic 指令有关
$scope.disableTap = function(){
container = document.getElementsByClassName('pac-container');
// disable ionic data tab
angular.element(container).attr('data-tap-disabled', 'true');
// leave input field if google-address-entry is selected
angular.element(container).on("click", function(){
document.getElementById('searchBar').blur();
});
};
这里是搜索框声明
var input = document.getElementById('searchBar');
var autocomplete = new google.maps.places.Autocomplete(input);
我有一个与搜索框关联的 ng-model
<input type="text" id="searchBar" ng-focus="disableTap()" placeholder="Type address here..."
ng-model="inputText">
我正在更新自动完成侦听器中的 $scope.inputText 变量,如下所示:
$scope.inputText = autocomplete.getPlace().formatted_address;
在地图监听器中像这样:
$scope.inputText = address.formatted_address;
blur 函数会覆盖 ng-model 吗?我弄错了吗?
如果我得到地图然后搜索框,但没有搜索框然后地图,谁能看到为什么我的 ng-model 更新?
任何帮助将不胜感激,谢谢
【问题讨论】:
-
你能在 plunker 或 jsfiddle 上发布一个示例吗?
标签: angularjs google-maps ionic-framework blur angular-ngmodel