angularjs:从控制器1中的模板获取值,然后从控制器2中读取该值

angularjs:从控制器1中的模板获取值,然后从控制器2中读取该值,angularjs,Angularjs,search.html <div ng-app="geonode_main_search"> {% verbatim %} <div ng-controller="aerial_search_controller"> <div class="form-group col-md-8" id="state"

search.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("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,
                    }
                }

            });
}]);

你好,我是新来的。这段代码显示我从search.html获取值
$rootScope.lng
$rootScope.lat
,并解析到第一个控制器。我的问题是我想从第一个控制器获取值
$rootScope.lng
$rootScope.lat
,并在第二个控制器中解析它。

在控制器周围传递值的最简单和最好的方法是使用角度服务

服务

module.factory('commonService', function() {

   var seriveContext = {
      lat : null,
      lon : null
   }

    return serviceContext;

});
创建服务后,可以使用DI(依赖项注入)将其传递给控制器并使用它。就你而言

module.controller("aerial_search_controller", 
[ '$scope', '$http', 'commonService', function($scope, $http, commonService) {

   // set values with in service
   commonService.lat = $sope.lat;
   commonService.lon = $scope.lon;

}]);
现在,在第二个控制器中,您可以使用相同的服务

module.controller("geo_search_controller", 
[ '$scope', '$http', 'commonService', function($scope, $http, commonService)
{


    // get value from service
    $scope.lat = commmonService.lat;
    $scope.lon = commonService.lon;

}]);

请注意,angular services是单个对象。

需要从两个控制器访问的数据必须放在一个服务中

我建议使用服务而不是$rootScope。我是在不同控制器之间共享数据的最佳实践。您能给我一些示例吗,因为我不太了解如何自定义代码。我想通过单击按钮从模板中获取该值。我应该把函数放在哪里。它是在第一个控制器还是服务中?您应该使用第一个控制器(空中搜索控制器)来设置服务的值。我已经在第一个控制器中获得值,但在第二个控制器中返回空值。。
module.controller("geo_search_controller", 
[ '$scope', '$http', 'commonService', function($scope, $http, commonService)
{


    // get value from service
    $scope.lat = commmonService.lat;
    $scope.lon = commonService.lon;

}]);