Необходимо отобразить несколько записей, связанных с одним и тем же именем клиента
Я написал API в nodejs, который будет извлекать все связанные записи на основе заданного имени клиента. И в угловом режиме я использую раскрывающийся список для выбора имени клиента с уникальными именами. Пока что он работает нормально, но я хочу отобразить все связанные данные (если одно имя клиента содержит 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>
2 ответа
Я думаю, что я близок к тому, чтобы получить требуемый результат, теперь я могу получить все связанные значения (строки) в консоли после небольшого изменения в теге select.
<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)
, Сейчас работает нормально.
Если вы хотите отобразить несколько документов с одним и тем же именем клиента, мы должны заменить | unique:'clientname'
с track by $index
в части ng-options. Таким образом, окончательный код ng-options будет ng-options="quote.clientname for quote in quotations track by $index"