Необходимо отобразить несколько записей, связанных с одним и тем же именем клиента

Я написал 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"

Другие вопросы по тегам