誰もが歓迎している(フィドル参照)角度のある素材でこのクールな小さなコントロールを作成しました。基本的に、入力時にGoogleのジオロケーションサービスを利用する角度材料のオートコンプリートフィールドです。遅延ディレクティブがないので、ユーザーが700ms後に入力を停止したときだけ検索するための特別なコードを追加します。角度材質オートコンプリート - セレクトオンセレクト
私の問題は、なぜMD-Autocompleteはアイテムが選択されるとすぐにクエリイベントを発生させるのですか?ここで
はHTMLである:ここでは
<md-autocomplete flex style="width: 50%; margin: auto; padding-top: 10em"
md-no-cache="false"
md-selected-item="ctrl.orig_loc"
md-search-text="ctrl.orig_loc_query"
md-items="item in querySearch(ctrl.orig_loc_query)"
md-selected-item-change="selectedItem(ctrl.orig_loc)"
md-item-text="ctrl.orig_loc.formatted_address"
md-floating-label="Type address or location name">
<span md-highlight-text="">{{item.formatted_address}}</span>
</md-autocomplete>
はJS querySearch機能である:ここで
// this is called every time a user types a character AND when item is selected... for some odd reason
$scope.querySearch = function(query) {
var deferred = $.Deferred();
// clear old request if something typed within 700ms
if (locQuery) {
clearTimeout(locQuery);
}
// run the query in 700ms. it will be cleared if the user types within 700ms
locQuery = setTimeout(function() {
// call google's geocoder
geocoder.geocode({
'address': query
}, deferred.resolve);
}, 700);
return deferred.promise().then(function(response) {
return response;
});
};
はフィドルです: https://jsfiddle.net/NeoSHNIK/jgpgv4Ls/3/
ここでも、問題がある - あなたが選択を行った後、それは別の検索を行います...なぜですか?