我在nodejs中编写了一个API,它将根据给定的客户端名称获取所有相关记录。在角度中,我使用下拉列表选择具有唯一名称的客户端名称。到目前为止,它工作正常,但我想显示所有相关数据(如果一个客户端名称包含 2-3 条不同的记录(。但是当我选择客户端名称时,它只获取一行的数据。
这是我的工作API,我已经与邮递员进行了检查:
router.get('/getbyname/:clientname',function(req,res){
var clientname= req.params.clientname;
Quotation.find({clientname: clientname} ,function(err,user){
if(err){
res.json({ success: false, message: 'Can't display details'});
}else{
res.json(user);
}
});
});
在角度中,我使用以下代码段来获取所有数据并从报价表中按客户端名称过滤:
var onPersonGetCompleted01 = function(response){
$scope.quotations = response.data;
//console.log($scope.quotations);
}
var refreshQuotation = function(){
$http.get('/api/getallquotations')
.then(onPersonGetCompleted01);
console.log('Response received...');
}
var onGetByName = function(response){
$scope.clientname = response.data;
console.log(response.data);
};
$scope.searchPerson = function(clientname){
$http.get('/api/getbyname/' + clientname)
.then(onGetByName);
console.log(clientname);
};
鉴于我有这样的选择:
<select ng-model="clientSelected" ng-options="quote.clientname for quote in quotations | unique:'clientname'" ng-click="searchPerson(quote.clientname)">
<option value="0">Default</option>
根据客户端名称选择数据没有问题。但我只想知道如何使用相同的客户端名称显示相关数据。由于有超过 2-3 个文档。
如果我这样使用,它只会获取一行的数据:
<div class="form-group">
<label class="control-label col-sm-4" for="email">UOM:</label>
<div class="col-sm-6">
<input type="text" class="form-control" required id="email"
placeholder="" name="projectid" ng-model=clientSelected.uom>
</div>
如果您想显示具有相同客户端名称的多个文档,那么我们应该在 ng-options 部分中使用track by $index
重新| unique:'clientname'
。所以最终的ng-options代码将ng-options="quote.clientname for quote in quotations track by $index"
我想我已经接近获得所需的输出了,现在我可以在控制台中获取所有相关值(行(在选择标签中进行轻微更改后。
<select class="chosen-select form-control col-sm-3" ng-
model="clientSelected" ng-options="quote.clientname for quote in
quotations | unique: 'clientname'" ng-
click="searchPerson(clientSelected.clientname)" >
<option value="0">Default</option>
</select>
最初我将 quote.clientname searchPerson(quote.clientname)
作为参数传递,现在我将其更改为 searchPerson(clientSelected.clientname)
。它现在工作正常。