Angularjs Angular JS/Firebase-如何将Google Autocomplete的值传递给Firebase?
我正在使用AngularJS/Firebase(AngularFire)&谷歌地图API创建一个基本的旅行愿望列表 到目前为止,我有以下几点: HTML: 指令:(将自动完成绑定到输入) 这一切都很好,并推动价值通过我的Firebase应用程序。我遇到的问题是ng模型没有获得谷歌提供的价值 假设我输入“nashville”,我得到一个自动完成的建议,我点击它,它用“nashville,TN,United States”填充输入——一旦我点击enter键提交表单,它就会通过我的初始搜索查询“nashville” 关于如何传递输入的最终值,有什么想法吗Angularjs Angular JS/Firebase-如何将Google Autocomplete的值传递给Firebase?,angularjs,google-maps,firebase,Angularjs,Google Maps,Firebase,我正在使用AngularJS/Firebase(AngularFire)&谷歌地图API创建一个基本的旅行愿望列表 到目前为止,我有以下几点: HTML: 指令:(将自动完成绑定到输入) 这一切都很好,并推动价值通过我的Firebase应用程序。我遇到的问题是ng模型没有获得谷歌提供的价值 假设我输入“nashville”,我得到一个自动完成的建议,我点击它,它用“nashville,TN,United States”填充输入——一旦我点击enter键提交表单,它就会通过我的初始搜索查询“nas
谢谢 我认为您没有创建一个保存自动完成结果值的变量。有一个简单的指令,用于将google places autocomplete添加到名为ng autocomplete的textbox元素中 请参考下面的代码,以了解更多关于我正在谈论的代码实现的信息
//create new autocomplete
//reinitializes on every change of the options provided
var newAutocomplete = function() {
scope.gPlace = new google.maps.places.Autocomplete(element[0], opts);
google.maps.event.addListener(scope.gPlace, 'place_changed', function() {
scope.$apply(function() {
// if (scope.details) {
scope.details = scope.gPlace.getPlace();
// }
scope.ngAutocomplete = element.val();
});
})
}
newAutocomplete()
我认为您应该将指令var与父作用域绑定,类似于作用域:{directiveVar:'='parentScopeVar}注意,您应该始终在ng模型中使用
object.property
样式表示法,因为直接引用可能会中断。例如,data.field
vsfield
在您的ng模型和范围中。谢谢@AniV,我会在有机会时尝试一下,然后再联系您。
$scope.setNewEntry = function(val) {
ref.child("places").push({
"location": val
})
$scope.field = "";
}
.directive('googleplace', function() {
return {
link: function(scope, element, attr) {
scope.gPlace = new google.maps.places.Autocomplete(element[0]);
}
}
})
//create new autocomplete
//reinitializes on every change of the options provided
var newAutocomplete = function() {
scope.gPlace = new google.maps.places.Autocomplete(element[0], opts);
google.maps.event.addListener(scope.gPlace, 'place_changed', function() {
scope.$apply(function() {
// if (scope.details) {
scope.details = scope.gPlace.getPlace();
// }
scope.ngAutocomplete = element.val();
});
})
}
newAutocomplete()