我在angularJs中使用googlePlace api,我想根据需要动态更改地点类型。就像我使用控制器使用$ scope绑定视图部分中的值但是它在这种情况下不起作用也尝试了$ rootScope。
尝试了很多其他的事情,但他们都没有工作,我也是angularJs的新手,所以不太了解。
这是代码: -
app.config(function(ngGPlacesAPIProvider){
ngGPlacesAPIProvider.setDefaults({
radius:1000000,
types:['electronics_store','bakery','bank','beauty_salon','bicycle_store','book_store','cafe','car_dealer','car_wash','car_repair','clothing_store','dentist','department_store'],
nearbySearchKeys: ['name','geometry', 'reference'],
placeDetailsKeys: ['name','formatted_address', 'formatted_phone_number',
'reference', 'website', 'geometry', 'email'],
});
});
控制器代码: -
app.config(function(ngGPlacesAPIProvider, ngGPlacesDefaults){
ngGPlacesAPIProvider.setDefaults(ngGPlacesDefaults);
});
app.controller('scdfindCustomerCtrl',function($scope,ngGPlacesAPI,$http,ngGPlacesDefaults){
ngGPlacesDefaults.types = ["atm"];
$scope.getDetails = function(ref){
$scope.details = ngGPlacesAPI.placeDetails({reference:ref}).then(
function (data) {
$scope.det=data;
console.log(data);
return data;
});
}
$scope.positions = [{lat:37.7699298,lng:-122.4469157}];
$scope.addMarker = function(event) {
var ll = event.latLng;
$scope.positions.push({lat:ll.lat(), lng: ll.lng()});
$scope.data = ngGPlacesAPI.nearbySearch({latitude:ll.lat(), longitude:ll.lng()}).then(
function(data){
$scope.person=data;
console.log(data);
return data;
});
}
所以基本上我想从视图部分更改“types:[]”数组。
任何帮助将不胜感激。
答案 0 :(得分:2)
您可以将这些默认值设置为常量,以便您可以直接在配置阶段获取这些值,因为角度constant
可以在那里访问&在controller
,factory
,directive
之类的所有其他角色组件中,只需注入它的依赖关系。
<强>恒强>
app.constant('ngGPlacesDefaults', {
radius:1000000,
types:['electronics_store','bakery','bank','beauty_salon','bicycle_store','book_store','cafe','car_dealer','car_wash','car_repair','clothing_store','dentist','department_store'],
nearbySearchKeys: ['name','geometry', 'reference'],
placeDetailsKeys: ['name','formatted_address', 'formatted_phone_number',
'reference', 'website', 'geometry', 'email'],
});
})
<强>配置强>
app.config(function(ngGPlacesAPIProvider, ngGPlacesDefaults){
ngGPlacesAPIProvider.setDefaults(ngGPlacesDefaults);
});
每当您想要更改ngGPlacesDefaults
配置的值时,您可以通过注入ngGPlacesDefaults
依赖项来处理这些值
app.controller('myController', function($scope, ngGPlacesDefaults){
//other code here
ngGPlacesDefaults.types = ["some", "different", "values"]; //you could change value like this
})
答案 1 :(得分:0)
我找到了解决这个问题的不同方法。你不需要额外传递类型:[]作为'nearBySearch'函数中的参数
$scope.data = ngGPlacesAPI.nearbySearch({latitude:ll.lat(), longitude:ll.lng(), types:[$scope.business.selected.businessType]}).then(
function(data){
$scope.person=data;
console.log(data);
return data;
});
“$ scope.business.selected.businessType”可以从视图动态绑定,就是这样。