使用搜索输入使用AngularJS从json文件获取详细信息
我的目标:使用搜索输入使用AngularJS从json文件获取详细信息,angularjs,Angularjs,我的目标: 我想在输入成员id时搜索成员详细信息。 我现在还不知道什么 我的视图已经准备好了。我已经创建了一个名为myService的服务,它使用$http 从members.json文件获取数据的服务。 我的问题? 我得到的不是搜索到的特定id的详细信息,而是 所有成员的姓名 你想问什么? 谁可以使用其id仅获取被搜索成员的详细信息 This is my view [1]: https://i.stack.imgur.com/PQ0BP.jpg This is my code
我想在输入成员id时搜索成员详细信息。
我现在还不知道什么
我的视图已经准备好了。我已经创建了一个名为myService的服务,它使用$http 从members.json文件获取数据的服务。
我的问题?
我得到的不是搜索到的特定id的详细信息,而是 所有成员的姓名
你想问什么?
谁可以使用其id仅获取被搜索成员的详细信息
This is my view
[1]: https://i.stack.imgur.com/PQ0BP.jpg
This is my code
[1]: https://i.stack.imgur.com/Q9tZp.jpg
This is my json file
{
"member":[
{ "Id":"1",
"Name":"Amit Singh",
"Dateofjoin":"21-03-2003",
"Number":"934234334"
},{
"Id":"2",
"Name":"Mohamad Aamir",
"Dateofjoin":"21-03-2012",
"Number":"934343434"
}
]
}
<body ng-app="myApp" ng-controller="ctrl">
<div>
<form class="form-horizontal">
<h2>Search for members.</h2>
<input type="text" name="" class='form-control' placeholder="Member ID"
ng-model="searchId"/><br>
<button class="btn btn-primary" ng-click="doSearch()">Search</button>
</form>
<div>
<p ng-repeat="x in data">
{{x.Name}}
</p>
</div>
</div>
</body>
<script type="text/javascript">
var app = angular.module("myApp",[]);
app.controller('ctrl',
['$scope','myService','$log',function($scope,myService,$log){
$scope.doSearch = function(){
myService.getData($scope.searchId).then(function(data){
$scope.data = data;
$log.info($scope.data);
});
};
}])
app.service('myService', ['$http','$log', function($http,$log){
this.getData = function(memberId){
return $http({
url:"members.json",
method:"GET",
dataType: 'json',
contentType: "application/json"
}).then(function(response){
var myData = response.data.member;
return(myData);
},function(response){
throw response;
});
}
}]);
</script>
这是我的观点
[1]: https://i.stack.imgur.com/PQ0BP.jpg
这是我的密码
[1]: https://i.stack.imgur.com/Q9tZp.jpg
这是我的json文件
{
“成员”:[
{“Id”:“1”,
“姓名”:“阿米特·辛格”,
“加入日期”:“21-03-2003”,
“编号”:“934234334”
},{
“Id”:“2”,
“姓名”:“穆罕默德·阿米尔”,
“加入日期”:“2012年3月21日”,
“编号”:“93434”
}
]
}
搜索成员。
搜寻
{{x.Name}
var-app=angular.module(“myApp”,[]);
应用程序控制器('ctrl',
['$scope','myService','$log',函数($scope,myService,$log){
$scope.doSearch=函数(){
getData($scope.searchId)。然后(函数(数据){
$scope.data=数据;
$log.info($scope.data);
});
};
}])
app.service('myService',['$http','$log',function($http,$log){
this.getData=函数(memberId){
返回$http({
url:“members.json”,
方法:“获取”,
数据类型:“json”,
contentType:“应用程序/json”
}).然后(功能(响应){
var myData=response.data.member;
返回(myData);
},功能(回应){
投掷反应;
});
}
}]);
对不起,我误解了这个问题,下面是正确的答案:
app.service('myService', ['$http','$log', function($http,$log){
this.getData = function(memberId){
return $http({
url:"members.json",
method:"GET",
dataType: 'json',
contentType: "application/json"
}).then(function(response){
var myData = response.data.member.filter(member=>member.Id==memberId)[0];
return(myData);
},function(response){
throw response;
});
}
}]);
您可以尝试以下方法:
角度模块('TableFilterApp',[])
.controller('TableFilterController',函数($scope){
$scope.plants=[
{
名称:'水星',
距离:0.4,
质量:0.055
},
{
名字:“维纳斯”,
距离:0.7,
质量:0.815
},
{
名称:“地球”,
距离:1,
质量:1
},
{
名字:“火星”,
距离:1.5,
质量:0.107
},
{
名称:“谷神星”,
距离:2.77,
质量:0.00015
},
{
名字:'木星',
距离:5.2,
质量:318
},
{
名称:“土星”,
距离:9.5,
质量:95
},
{
名称:“天王星”,
距离:19.6,
质量:14
},
{
名字:“海王星”,
距离:30,,
质量:17
},
{
名称:'冥王星',
距离:39,
质量:0.00218
},
{
名称:'Charon',
距离:39,
质量:0.000254
}
];
});
表过滤器
平均距离质量
{{p.name}{{p.distance}}{{p.mass}}
相关代码必须以文本形式出现在问题中。不是作为图像的URL。您的服务返回所有成员的数组response.data.member
。它不处理作为参数传递的memberId
。所以为什么您认为这个服务应该只返回一个成员,由memberId标识?为什么不更改代码以查找由memberId标识的成员,并返回该成员而不是整个数组?你需要一个循环。或者调用Array.filter()。我知道它返回一个数组。我只是想知道可以使用的不同方法。谢谢你,顺便说一句:)如果服务器上只有一个静态json文件,唯一可能的方法就是在数组中循环并找到具有给定ID的元素。你还可以做什么?使用console.log(myData);,查看函数响应中的数据。看它是否包含详细信息@AmitPhartiyal@Here我们使用| filter来过滤表中的数据,但在您的情况下,我们在li中查找数据,使用带有ng repeat的filter,但应该确保从模型中,这里我们有虚拟数据,而不是从角度服务中获取数据