在angularjs中的app.config()内进行更改

时间:2015-11-07 06:16:05

标签: angularjs google-maps-api-3 angularjs-scope

我在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:[]”数组。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可以将这些默认值设置为常量,以便您可以直接在配置阶段获取这些值,因为角度constant可以在那里访问&在controllerfactorydirective之类的所有其他角色组件中,只需注入它的依赖关系。

<强>恒

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”可以从视图动态绑定,就是这样。