Angularjs 要使列表项在单击时显示其详细信息,请单击
我正在尝试根据id获取城市的纬度和经度。例如,如果我单击kanpur,它将显示从API返回的纬度。但我所做的只是返回最后一个从API返回的城市的纬度 我的app.js代码是:Angularjs 要使列表项在单击时显示其详细信息,请单击,angularjs,Angularjs,我正在尝试根据id获取城市的纬度和经度。例如,如果我单击kanpur,它将显示从API返回的纬度。但我所做的只是返回最后一个从API返回的城市的纬度 我的app.js代码是: .controller('AppCtrl', function($scope, $http,$ionicModal,$cordovaGeolocation, $ionicLoading, $ionicPlatform) { $scope.currentItem = 1;
.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放入请求的有效负载中,指定的数据将从服务器返回?现在,据我所见,所有数据都是从服务器返回的。这是一个糟糕的方法。或者在初始化期间获取(角度解析)所有数据并将其缓存。