【发布时间】:2015-12-12 18:15:59
【问题描述】:
搜索.html
<div ng-app="geonode_main_search">
{% verbatim %}
<div ng-controller="aerial_search_controller">
<div class="form-group col-md-8" id="state">
<label >State</label>
<select class="form-control" ng-model="m.state_id" ng-change="loadStateDistrict(m.state_id)" ng-options="w.state_id as w.state_name for w in roles">
<option value="0">-Select State-</option>
</select>
</div>
<div class="form-group col-md-8" id="district" >
<label >District</label>
<select class="form-control" ng-model="w.districtid" ng-change="loadDistrict(w.districtid)" ng-options="w.districtid as w.district_id for w in StateDistrictList">
<option value="0">-Select District-</option>
</select>
</div>
<div class="form-group col-md-8" >
<!-- <label >{% trans "Lat" %} :</label> -->
<input class="form-control" type="hidden" ng-repeat="item in districtList" ng-model="item.lat_wgs" name="lat_wgs" id="lat_wgs" value={{item.lat_wgs}}>
</div>
<div class="form-group col-md-8" >
<!-- <label >{% trans "Long" %} :</label> -->
<input class="form-control" type="hidden" ng-repeat="item in districtList" ng-model="item.long_wgs" name="long_wgs" id="long_wgs" value={{item.long_wgs}}>
</div>
<div class="form-group col-md-8">
<a href="map/aerial_list" class="btn btn-primary pull-right" ng-repeat="item in districtList" ng-click="add(item)" class="btn btn-danger">Search</a>
</div>
</div>
{% endverbatim %}
</div>
第一个控制器:
module.controller("aerial_search_controller", [ '$scope','$rootScope', '$http', function($scope, $rootScope,$http) {
$scope.roles = [];
$http.get("/rest/v1/state/").success(function(data){
$scope.roles = data.objects;
$scope.state_districts = [];
$http.get("/rest/v1/state_district/").success(function(data){
$scope.state_districts = data.objects;
$scope.districts = [];
$http.get("/rest/v1/district/").success(function(data){
$scope.districts = data.objects;
$scope.click=function(data)
{
console.log(data.state_id);
console.log(data.districtid);
}
$scope.loadStateDistrict=function(id)
{
// console.log(id);
$scope.StateDistrictList=[];
angular.forEach($scope.state_districts,function(state_district)
{
if(state_district.stateid==id)
{
$scope.StateDistrictList.push(state_district);
}
})
};
$scope.loadDistrict=function(id)
{
$scope.districtList=[];
angular.forEach($scope.districts,function(district)
{
if(district.district_id==id)
{
$scope.districtList.push(district);
$rootScope.lat = district.lat_wgs;
$rootScope.lng = district.long_wgs;
console.log($rootScope.lat);
console.log($rootScope.lng);
}
})
}; // end $scope.loadDistrict
});
});
});
$scope.add = function(item) {
$rootScope.lat = item.lat_wgs;
$rootScope.lng = item.long_wgs;
};
}]);
第二个控制器:
module.controller("geo_search_controller", [ '$scope','$rootScope', '$http', function($scope, $rootScope,$http) {
angular.extend($scope, {
map_center: {
lat: $rootScope.lat,
lng: $rootScope.lng,
zoom: 10.5
},
defaults: {
zoomControl: true
},
layers: {
baselayers: {
base_map: definedLayers.base_map
},
overlays: {
pc: definedOverlays.pc,
fl: definedOverlays.fl,
}
}
});
}]);
你好,我是 angularjs 的新手。这段代码显示我从 search.html 中获得了值 $rootScope.lng 和 $rootScope.lat 并解析到第一个控制器。我的问题是我想从第一个控制器获取值 $rootScope.lng 和 $rootScope.lat 并在第二个控制器中解析它。
【问题讨论】:
-
我建议使用服务而不是 $rootScope。 I 是在不同控制器之间共享数据的最佳实践。
-
你能给我一些例子吗,因为我不太明白如何自定义我的代码。
标签: angularjs