AngularJS到角度指令转换
我在AngularJS中有这个指令,现在我想把它转换成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:
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中调用它,您可以像在另一个组件中一样使用它:。您可以共享您在上述代码中提到的服务文件吗