У меня есть объект 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"]
}
попробуйте этот угловой код, здесь работает скрипка
Посмотреть
<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"]
}
}
Предполагая, что каждый адаптер коррелирует с каждым значком штрих-кода, 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>