Цикл по объекту и отображение полей ввода

0

У меня есть объект javascript, состоящий из двух массивов. Мы можем назвать один массив адаптеров и других штрих-кодов. В массиве адаптеров всегда будет 8 строк, в то время как штрих-коды всегда будут иметь 3 строки, но могут иметь до 8 строк. Итак, мне нужно отобразить строку адаптера, строку штрих-кода и ввести поле ввода для ввода другой строки (штрих-код). Однако мне нужно найти длину массива штрих-кодов и отобразить только много полей ввода. Что было бы самым простым способом добиться этого? jQuery, Angular?

var bar = {
    "adaptors": ["506-707", "502-701", "501-708", "507-706", "508-704", "505-703", "503-705", "504-702" ],
    "barcodes":["11-11-1111","11-11-2222","11-11-3333","11-11-4444"]
}

Изображение 174551

  • 0
    Только входы для оставшихся штрих-кодов пробелов? Например, если ваш массив штрих-кодов имеет длину 5, вы хотите добавить / отобразить только 3 входа? Или если его длина 3, то только 3 показать?
  • 0
    Это правильно, поэтому длина массива штрих-кодов будет равна количеству отображаемых полей ввода.
Показать ещё 2 комментария
Теги:
arrays
loops

2 ответа

1

попробуйте этот угловой код, здесь работает скрипка

Посмотреть

<div ng-controller="MyCtrl">
<div ng-repeat="(index,val) in bar.adaptors">
 {{val}} <input type="text" ng-show="bar.barcodes[index]">
</div>
</div>

контроллер

var myApp = angular.module('myApp',[]);

 function MyCtrl($scope) {
   $scope.bar = {
      adaptors: ["506-707", "502-701", "501-708", "507-706", "508-704", "505-703", "503-705", "504-702" ],
    barcodes:["11-11-1111","11-11-2222","11-11-3333","11-11-4444"]
 }
}
  • 0
    Этого кода было достаточно, чтобы подтолкнуть меня в правильном направлении. Спасибо!
0

Предполагая, что каждый адаптер коррелирует с каждым значком штрих-кода, adaptors[0] выравниваются со barcodes[0]:

Вы можете использовать ng-repeat с (index,value) и использовать index или использовать автоматически генерируемое значение $index, которое задает каждую итерацию для доступа к элементу bar.barcodes. Используйте ng-if чтобы генерировать ввод только в том случае, если элемент массива существует.

angular.module('app',[]).controller("ctrl",["$scope",function($scope){
  $scope.bar = {
    "adaptors": ["506-707", "502-701", 
                 "501-708", "507-706", 
                 "508-704", "505-703", 
                 "503-705", "504-702" ],
    "barcodes":["11-11-1111","11-11-2222","11-11-3333","11-11-4444"]
  };
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<table ng-app="app" ng-controller="ctrl">
  <tr ng-repeat="adaptor in bar.adaptors">
    <th>Adaptor</th><td>{{adaptor}}</td>
    <th>Barcode</th><td>
       <input ng-if="bar.barcodes[$index]" ng-model="bar.barcodes[$index]">
    </td>
  </tr>
</table>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню