Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Angular JS/Firebase-如何将Google Autocomplete的值传递给Firebase?_Angularjs_Google Maps_Firebase - Fatal编程技术网

Angularjs Angular JS/Firebase-如何将Google Autocomplete的值传递给Firebase?

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

我正在使用AngularJS/Firebase(AngularFire)&谷歌地图API创建一个基本的旅行愿望列表

到目前为止,我有以下几点:

HTML:

指令:(将自动完成绑定到输入)

这一切都很好,并推动价值通过我的Firebase应用程序。我遇到的问题是ng模型没有获得谷歌提供的价值

假设我输入“nashville”,我得到一个自动完成的建议,我点击它,它用“nashville,TN,United States”填充输入——一旦我点击enter键提交表单,它就会通过我的初始搜索查询“nashville”

关于如何传递输入的最终值,有什么想法吗


谢谢

我认为您没有创建一个保存自动完成结果值的变量。有一个简单的指令,用于将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
vs
field
在您的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()