2016-12-16 4 views
0

を更新していないバインディングのオートコンプリート検索入力値にAPIを配置します。私は、入力ボックスに入力を開始するときノックアウトにtextInputは、私はGoogleマップを使用していた値

<input data-bind="textInput: searchInput" id="location" type="text"> 

だから、例えば私はRoを入力してオートコンプリートの提案から私がRomeを選択し、[送信]をクリックし、searchInput()の値がまだRo代わりのRomeに設定されています。 はどうすればsearchInput()は、オートコンプリートの提案を選択した後に更新するかもしれませんか?

+0

、あなたもそのコードを投稿することができますか? select2の使用を試みることができます。 https://select2.github.io/ – Agalo

+0

それはGoogleが、場所のAPI機能をマッピングしている 'のvar locationAutocomplete =新しいgoogle.maps.places.Autocomplete(のdocument.getElementById( '場所'));このような場合には、' – Hue

+0

、あなたJSコードからsearchInput変数の値を設定できます。私はbeleive locationAutocompleteは、自動補完で選択された値を提供する必要があります。 – Agalo

答えて

0

Googleマップでは、自動完了から選択するとplace_changedイベントが発生します。あなたは、そのイベントをキャッチし、ノックアウトを読むことができるという要素にinputイベントを発生することができます

google.maps.event.addListener(autocomplete, 'place_changed', function() { 
    ko.utils.triggerEvent(input, "input"); 
}); 

https://jsfiddle.net/dxdyqbxr/

0

私はノックアウトを使用していますが、あなたが希望あなたのsearchInputを定義し、あなたのViewModel内のため、それはしばらくしていますcomputedFunctionを作成します。お使いの値がテキストボックスに変更した場合には、オートコンプリート機能をオフに解雇なり、値が選択された場合、それはあなたのテキストボックスを更新してしまうsearchInput更新します。ここに無限ループが存在するかどうかは不明ですので、必ずテストして調整してください。自動補完コントロールがある

google.maps.event.addListener(autocomplete, 'place_changed', function() { 
 
    self.searchInput('autocompleteValue'); 
 
}); 
 

 
self.UseAutoComplete = ko.computedFunction((
 
    google.maps.places.Autocomplete(self.searchInput()); 
 
));

関連する問題