这是我为此编写的一个简单的自定义绑定,以防有人正在搜索它:
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