【发布时间】:2016-05-04 14:24:32
【问题描述】:
是否可以从控制器外部设置控制器的 $scope 变量?
例如,如果我有一个控制器:
app.controller('citySelectCtrl', ['$scope',function($scope){
}]);
还有一个全局范围内的函数,它有一个事件处理程序。现在我想在该事件发生时设置一个$scope 变量。可能吗?我的全局函数:
function initAutocomplete() {
autocomplete = new google.maps.places.Autocomplete(
/** @type {!HTMLInputElement} */(document.getElementById('autocomplete')),
{
componentRestrictions: {'country': 'in'},
types: ['(cities)']
});
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 22.5937, lng: 78.9629},
zoom: 5,
minZoom: 5
});
}
autocomplete.addListener('place_changed', function() {
infowindow.close();
marker.setVisible(false);
var place = autocomplete.getPlace();
if (!place.geometry) {
window.alert("Autocomplete's returned place contains no geometry");
return;
}
// If the place has a geometry, then present it on a map.
if (place.geometry.viewport) {
map.fitBounds(place.geometry.viewport);
} else {
map.setCenter(place.geometry.location);
map.setZoom(17); // Why 17? Because it looks good.
}
----------------------------------------------------------
//SET $scope.city = place here
----------------------------------------------------------
infowindow.setContent('<div><strong>' + place.name + '</strong><br>' + address);
infowindow.open(map, marker);
});
【问题讨论】:
-
将此控制器范围作为参数传递给该函数
-
你可以使用$scope的$rootscope变量来设置全局值
-
就像@ramsingh 提到的
$rootScope是一个全局变量,可以在模块中的所有控制器中使用,而$scope是特定于当前控制器的。 -
$rootscope 是...的财产?应用程序?
-
@dreamweiver 如何在 Angular 应用范围之外访问 $rootScope?
标签: javascript angularjs