Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.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到角度指令转换_Angularjs_Angular - Fatal编程技术网

AngularJS到角度指令转换

AngularJS到角度指令转换,angularjs,angular,Angularjs,Angular,我在AngularJS中有这个指令,现在我想把它转换成AngularJS: angular.module('mobApp.services'). directive('googlePlaces', function(ShareObjectService){ var googlePlaceComponents = { street_number: 'short_name', route: 'long_name', locality:

我在AngularJS中有这个指令,现在我想把它转换成AngularJS:

angular.module('mobApp.services').
    directive('googlePlaces', function(ShareObjectService){
    var googlePlaceComponents = {
        street_number: 'short_name',
        route: 'long_name',
        locality: 'long_name',
        administrative_area_level_1: 'long_name',
        sublocality_level_2: 'long_name',
        country: 'long_name',
        postal_code: 'short_name',
        sublocality_level_1: 'long_name'
    };          
    return {
        restrict:'E',
        replace:true,
        template: '<input id="google_places_ac" name="google_places_ac" type="text" class="input-block-level"/>',
        link: function(scope, elm, attrs){
            var autocomplete = new google.maps.places.Autocomplete($("#google_places_ac")[0], {});
            google.maps.event.addListener(autocomplete, 'place_changed', function() {
              var place = autocomplete.getPlace();
              // console.log(place.formatted_address);
              console.log(JSON.stringify(place));
              var addressObject = {};
              addressObject['formatted_address'] = place.formatted_address;
              addressObject['lat'] = place.geometry.location.lat();
              addressObject['lng'] = place.geometry.location.lng();
              for (var i = 0; i < place.address_components.length; i++) {
                var addressType = place.address_components[i].types[0];
                if (googlePlaceComponents[addressType]) {
                  addressObject[addressType] = place.address_components[i][googlePlaceComponents[addressType]];
                }
              }
              ShareObjectService.setGooglePlace(addressObject);
            });
        }
    }
});
angular.module('mobApp.services')。
指令('googlePlaces',函数(ShareObjectService){
变量googlePlaceComponents={
街道编号:“短名称”,
路线:'long_name',
地点:'long_name',
行政区级别1:“长名称”,
子局部性级别2:“长名称”,
国家:'long_name',
邮政编码:“短名称”,
子局部性\u级别\u 1:“长\u名称”
};          
返回{
限制:'E',
替换:正确,
模板:“”,
链接:功能(范围、elm、属性){
var autocomplete=new google.maps.places.autocomplete($(“#google_places_ac”)[0],{});
google.maps.event.addListener(自动完成,'place\u changed',函数(){
var place=autocomplete.getPlace();
//console.log(place.formatted_地址);
log(JSON.stringify(place));
var addressObject={};
addressObject['formatted_address']=place.formatted_address;
addressObject['lat']=place.geometry.location.lat();
addressObject['lng']=place.geometry.location.lng();
对于(变量i=0;i
我使用它就像:

<google-places location=location></google-places>


如何将整个对象转换为角度对象?

您需要为此创建一个组件类。如下所述:

@Component({
  selector: 'googlePlaces',
  template: '<input id="google_places_ac" name="google_places_ac" type="text" #googlePlacesAc class="input-block-level"/>',
  providers: [ ShareObjectService ]
})
export class GooglePlacesComponent {
  constructor(private service: ShareObjectService, @Query('googlePlacesAc') inputElts:QueryList<ElementRef>) {
    this.inputElt = inputElts.first;
  }

  ngOnInit() {
    var googlePlaceComponents = {
        street_number: 'short_name',
        route: 'long_name',
        locality: 'long_name',
        administrative_area_level_1: 'long_name',
        sublocality_level_2: 'long_name',
        country: 'long_name',
        postal_code: 'short_name',
        sublocality_level_1: 'long_name'
    };          

    var autocomplete = new google.maps.places.Autocomplete(this.inputElt.nativeElement, {});
            google.maps.event.addListener(autocomplete, 'place_changed', () =>{
              var place = autocomplete.getPlace();
              // console.log(place.formatted_address);
              console.log(JSON.stringify(place));
              var addressObject = {};
              addressObject['formatted_address'] = place.formatted_address;
              addressObject['lat'] = place.geometry.location.lat();
              addressObject['lng'] = place.geometry.location.lng();
              for (var i = 0; i < place.address_components.length; i++) {
                var addressType = place.address_components[i].types[0];
                if (googlePlaceComponents[addressType]) {
                  addressObject[addressType] = place.address_components[i][googlePlaceComponents[addressType]];
                }
              }
              ShareObjectService.setGooglePlace(addressObject);
            });
        }
    }
}
@组件({
选择器:'googlePlaces',
模板:“”,
提供者:[共享对象服务]
})
导出类GooglePlacesComponent{
构造函数(私有服务:ShareObjectService,@Query('googlePlacesAc')inputElts:QueryList){
this.inputElt=inputElts.first;
}
恩戈尼尼特(){
变量googlePlaceComponents={
街道编号:“短名称”,
路线:'long_name',
地点:'long_name',
行政区级别1:“长名称”,
子局部性级别2:“长名称”,
国家:'long_name',
邮政编码:“短名称”,
子局部性\u级别\u 1:“长\u名称”
};          
var autocomplete=new google.maps.places.autocomplete(this.inputElt.nativeElement,{});
google.maps.event.addListener(自动完成,'place\u changed',()=>{
var place=autocomplete.getPlace();
//console.log(place.formatted_地址);
log(JSON.stringify(place));
var addressObject={};
addressObject['formatted_address']=place.formatted_address;
addressObject['lat']=place.geometry.location.lat();
addressObject['lng']=place.geometry.location.lng();
对于(变量i=0;i
ho在HTMLY中调用它,您可以像在另一个组件中一样使用它:。您可以共享您在上述代码中提到的服务文件吗