Angularjs 要使列表项在单击时显示其详细信息,请单击

Angularjs 要使列表项在单击时显示其详细信息,请单击,angularjs,Angularjs,我正在尝试根据id获取城市的纬度和经度。例如,如果我单击kanpur,它将显示从API返回的纬度。但我所做的只是返回最后一个从API返回的城市的纬度 我的app.js代码是: .controller('AppCtrl', function($scope, $http,$ionicModal,$cordovaGeolocation, $ionicLoading, $ionicPlatform) { $scope.currentItem = 1;

我正在尝试根据id获取城市的纬度和经度。例如,如果我单击kanpur,它将显示从API返回的纬度。但我所做的只是返回最后一个从API返回的城市的纬度

我的app.js代码是:

    .controller('AppCtrl', function($scope, 
        $http,$ionicModal,$cordovaGeolocation, $ionicLoading, $ionicPlatform) {
         $scope.currentItem = 1;
       $scope.latitude;
     $scope.longitude;

    $scope.ers = {
      'agency_device_id' : ''

    };

    $scope.submit = function(){
              var link = 'http://trendytoday.in/ers/api/DeviceAlarms';
              $http.post(link, {ers: $scope.ers},{headers: {'Content-Type': 'application/json'} }).then(function (res){
             // $scope.mssg = res.data.ers.resMessage;
             // $scope.resp = res.data.ers.response;

              $scope.arr = [];
              angular.forEach(res.data.ers.data.alarms, function(value) {
              $scope.arr.push(value);
                //console.log(value.city)
              latitude=value.lattitude;
              longitude=value.longitude;



           })
    });
    }

    $scope.getdetails = function(){
    window.alert(latitude);
};
});
而API的回应是:

{
  "ers": {
    "resMessage": "1",
    "response": "Success",
    "data": {
      "alarms": [
        {
          "id": "1",
          "alarm_id": "2",
          "title": "Fire",
          "description": "fire",
          "type": "Fire",
          "priority": "High",
          "address": "Kanpur, Uttar Pradesh, India",
          "city": "Kanpur",
          "state": "UP",
          "country": "India",
          "zipcode": "123456",
          "lattitude": "26.449923",
          "longitude": "80.3318736"
        },
        {
          "id": "3",
          "alarm_id": "4",
          "title": "test-02",
          "description": "test-02",
          "type": "Medical",
          "priority": "High",
          "address": "Borivali West, Mumbai, Maharashtra, India",
          "city": "Mumbai",
          "state": "MH",
          "country": "India",
          "zipcode": "123456",
          "lattitude": "19.2461644",
          "longitude": "72.85090560000003"
        }
      ]
    }
  }
}

假设您的
$scope.currentItem
是所选城市(如
kanpur
)的
id
,那么当API返回数据时,检查此值以匹配
id
,并设置
$scope
变量

我希望你能明白

函数MyCtrl($scope){
$scope.currentItem=1;
$scope.latitude;
$scope.longitude;
$scope.submit=函数(){
$scope.res={
数据:{
“ers”:{
“resMessage”:“1”,
“回应”:“成功”,
“数据”:{
“警报”:[{
“id”:“1”,
“报警id”:“2”,
“标题”:“火”,
“说明”:“火灾”,
“类型”:“火灾”,
“优先级”:“高”,
“地址”:“印度北方邦坎普尔”,
“城市”:“坎普尔”,
“状态”:“向上”,
“国家”:“印度”,
“zipcode”:“123456”,
“Lattude”:“26.449923”,
“经度”:“80.3318736”
},
{
“id”:“3”,
“报警id”:“4”,
“标题”:“test-02”,
“说明”:“test-02”,
“类型”:“医疗”,
“优先级”:“高”,
“地址”:“印度马哈拉施特拉邦孟买Borivali West”,
“城市”:“孟买”,
“州”:“MH”,
“国家”:“印度”,
“zipcode”:“123456”,
“格子”:“19.2461644”,
“经度”:“72.85090560000003”
}
]
}
}
}
}
$scope.arr=[];
角度.forEach($scope.res.data.ers.data.alarms,函数(值){
$scope.arr.push(值);
if($scope.currentItem==value.id){
$scope.latitude=value.latitude;
$scope.longitude=value.longitude;
}
});
}
$scope.submit();
}

长:{{经度}
纬度:{{纬度}

我唯一更改的是将obj作为参数传递给getdetails函数

$scope.getdetails = function(obj){
   alert(obj.lattitude);
 }
和html格式:

 <div ng-repeat="obj in arr " ng-click="getdetails(obj)">
      <p><b>{{obj.city}}</b></p>
    </div>

{{obj.city}


agency\u device\u id始终为空字符串如果在
forEach
中设置纬度和经度范围,它将仅设置为last
值。@Sajal;是的,这就是问题所在,那么如何解决这个问题呢?同时提供代码@user28为什么不将单击的城市/城镇id放入请求的有效负载中,指定的数据将从服务器返回?现在,据我所见,所有数据都是从服务器返回的。这是一个糟糕的方法。或者在初始化期间获取(角度解析)所有数据并将其缓存。