2016-01-26 3 views
2

Добрый день, это мой первый раз, спрашивая здесь, что переполнение стека так простите за ошибки, которые вы увидите в моем вопросе.Как получить arraylist внутри arraylist, где index = x

im new при веб-программировании и угловом. я создал список рецепта и в рецепте есть список лекарств

.controller('prescriptionTable',function($scope) { 
var Prescription = [ 
    {id:1,secID:1,docID:1,medicine:[ 
     {name:"lozartan",quantity:2}, 
     {name:"biogesic",quantity:3}, 
     {name:"paracetamol",quantity:1},] 
    }, 
    {id:2,secID:1,docID:1,medicine:[ 
     {name:"Lumiracoxib",quantity:2}, 
     {name:"Cloxacillin",quantity:3}, 
     {name:"Allopurinol",quantity:4}] 
    }, 
]; 

$scope.Prescription = Prescription; 
$scope.indexNum =0; 

тогда я использую нг-повтор, так что я могу получить список лекарств

<div ng-controller="prescriptionTable"> 
    <ul> 
     <li ng-repeat="px in Prescription"> 
      {{px.id}} 
      <ul> 
       <li ng-repeat="med in px.medicine"> 
        Name: {{med.name}} , Quantity: {{med.quantity}} 
       </li> 
      </ul> 
     </li> 
    </ul> 
</div> 

Как я могу фильтровать Prescription показать только список лекарств определенного рецепта, используя $ scope.indexNum?

спасибо и привет.

+0

откуда вы генерируете $ scope.indexNum и на каком основании вы вносите этот индекс и как? Есть ли какой-нибудь html? –

+0

im планирую иметь , чтобы получить идентификатор рецепта внутри html –

+1

Я думаю, что лучший способ сделать это - использовать фильтры. Например: 'med в px.medicine | filter: indexNum track by med.quantity'. Я пытался дать вам плункер, но я не знаю, почему сейчас не работает. посмотрите ng-repeat (docs) [https://docs.angularjs.org/api/ng/directive/ngRepeat], здесь он будет показан лучше. –

ответ

0

, если вы хотите, чтобы один индекс можно указать его либо как

$scope.indexNum = 0; 

и в вашем HTML

<li ng-repeat="px in Prescription track by $index" ng-if="$index == indexNum"> 

ИЛИ

вы можете даже жесткий код значение 0

<li ng-repeat="px in Prescription track by $index" ng-if="$index == 0"> 

ИЛИ

, если вы хотите, чтобы отобразить один элемент, вы должны избегать ng-repeat вообще

<div ng-controller="prescriptionTable"> 
    <ul> 
     <li> 
      {{Prescription[indexNum].id}} 
      <ul> 
       <li ng-repeat="med in Prescription[indexNum].medicine"> 
       Name: {{med.name}} , Quantity: {{med.quantity}} 
       </li> 
      </ul> 
     </li> 
    </ul> 
</div> 

ИЛИ

вы можете иметь несколько индекс, как

<div ng-controller="prescriptionTable"> 
    <ul> 
     <li ng-repeat="px in Prescription track by $index" ng-if="allowedIndexes.indexOf($index) > -1"> 
      {{px.id}} 
      <ul> 
       <li ng-repeat="med in px.medicine"> 
        Name: {{med.name}} , Quantity: {{med.quantity}} 
       </li> 
      </ul> 
     </li> 
    </ul> 
</div> 

и в вашей js у вас будет массив как

$scope.allowedIndexes = [0,2,5,7,9]; 

ИЛИ

вы можете использовать угловой фильтр

<div ng-controller="prescriptionTable"> 
    <ul> 
     <li ng-repeat="px in Prescription|filter:{id:indexNum}"> 
      {{px.id}} 
      <ul> 
       <li ng-repeat="med in px.medicine"> 
        Name: {{med.name}} , Quantity: {{med.quantity}} 
       </li> 
      </ul> 
     </li> 
    </ul> 
</div> 

Это будет фильтровать все объекты с id, содержащим значением indexNum, то есть, если indexNum равен 1, то есть будут объекты с id равными 1, 10, 11, 12, 21 ....

+0

Спасибо. Трек решает проблему. у вас есть несколько учебников, где я могу узнать больше угловых и html? Спасибо еще раз за помощь. –

+0

В Интернете доступно множество обучающих программ. Вы можете начать с http: //www.ng-newsletter.ком/сообщений/beginner2expert-how_to_start.html. – mani

Смежные вопросы