這裏是一個裸露的骨頭定製結合我的情況下,任何人都寫了,這是尋找這樣的:
ko.bindingHandlers.addressAutocomplete = {
init: function (element, valueAccessor, allBindingsAccessor) {
var value = valueAccessor(), allBindings = allBindingsAccessor();
var options = { types: ['geocode'] };
ko.utils.extend(options, allBindings.autocompleteOptions)
var autocomplete = new google.maps.places.Autocomplete(element, options);
google.maps.event.addListener(autocomplete, 'place_changed', function() {
result = autocomplete.getPlace();
value(result.formatted_address);
});
},
update: function (element, valueAccessor, allBindingsAccessor) {
ko.bindingHandlers.value.update(element, valueAccessor);
}
};
您可以使用它像這樣:
<input type="text" data-bind="addressAutocomplete: Address" />
或者,如果你想指定Google地方自動填充的選項(例如,將您的搜索限制在一個國家/地區):
<input type="text" data-bind="addressAutocomplete: Address, autocompleteOptions: { componentRestrictions: { country: 'au' } }" />
希望它有幫助。
(注意我已經在默認情況下限制了我的自動完成的地理編碼類型。)
此外,如果你要綁定的地址的特定組件看到這個要點https://gist.github.com/chadedrupt/5974524
這是偉大的!感謝您的詳細和有趣的迴應。我一定誤解了綁定是如何發生的,我想我假定KO對象的值只是查找綁定控件的值,但是我猜他們必須是分開的。 – orangesherbert