update - angularjs set html title




Übergabe von 2 $ Index-Werten innerhalb der verschachtelten ng-Wiederholung (4)

Eine elegantere Lösung als $parent.$index verwendet ng-init :

<ul ng-repeat="section in sections" ng-init="sectionIndex = $index">
    <li  class="section_title {{section.active}}" >
        {{section.name}}
    </li>
    <ul>
        <li class="tutorial_title {{tutorial.active}}" ng-click="loadFromMenu(sectionIndex)" ng-repeat="tutorial in section.tutorials">
            {{tutorial.name}}
        </li>
    </ul>
</ul>

Plunker: http://plnkr.co/edit/knwGEnOsAWLhLieKVItS?p=info

Also habe ich eine ng-Wiederholung innerhalb einer anderen ng-Wiederholung verschachtelt, um ein Navigationsmenü zu erstellen. Auf jedem <li> in der inneren ng-repeat-Schleife setze ich einen ng-click, der den entsprechenden Controller für diesen Menüpunkt aufruft, indem er den $ index weiterleitet, um der App mitzuteilen, welche wir brauchen. Allerdings muss ich auch den $ index vom äußeren ng-repeat übergeben, damit die App weiß, in welchem ​​Bereich wir uns befinden und welches Tutorial.

<ul ng-repeat="section in sections">
    <li  class="section_title {{section.active}}" >
        {{section.name}}
    </li>
    <ul>
        <li class="tutorial_title {{tutorial.active}}" ng-click="loadFromMenu($index)" ng-repeat="tutorial in section.tutorials">
            {{tutorial.name}}
        </li>
    </ul>
</ul>

Hier ist ein Plunker http://plnkr.co/edit/bJUhI9oGEQIql9tahIJN?p=preview


Ich versuche die Lösung zu verwenden, die Gonzalon vorgeschlagen hat. Aber es funktioniert nicht in meinem Fall. Ich möchte einen Tooltip mit mehr Informationen haben, wenn sich die Maus über der Zelle der Tabelle befindet, die ich erstelle, indem ich zu den Reihen und den Zellen looping bin.

Die Werte ändern sich, wenn Sie den Mauszeiger über die Tabellenzellen bewegen, aber die Werte für Zeile und Spalte sind immer die Spaltennummer.

<div table-data="vm.tableData" ng-if= "vm.table_ready" >

     <b2b-table>
     <table>
         <thead type="header">
             <tr>
                <th ng-repeat = "zone in vm.tableData[0]" >{{zone}}</th>

             </tr>
         </thead>

         <tbody type="body" ng-repeat="row in vm.tableData track by $index" ng-init="rowIndex = $index" ng-if="$index >0" >
             <tr>
               <th>{{row[0]}}</th>
               <td headers="rowheader0" ng-repeat = "cell in row  track by $index" ng-init="columnIndex = $index" ng-if="$index >0"  ng-mouseover="vm.showTooltip(rowIndex, columnIndex)" ng-mouseleave="vm.hideTooltip()" >
                {{cell[1]}}

               </td>
             </tr>
         </tbody>

     </table>
      </b2b-table>

 </div>

Nur um jemandem zu helfen, der hierher kommt ... Du solltest $ parent nicht benutzen, da es nicht wirklich sicher ist. Wenn Sie ein ng-if innerhalb der Schleife hinzufügen, erhalten Sie den $ index vermessen!

Richtiger Weg

  <table>
    <tr ng-repeat="row in rows track by $index" ng-init="rowIndex = $index">
        <td ng-repeat="column in columns track by $index" ng-init="columnIndex = $index">

          <b ng-if="rowIndex == columnIndex">[{{rowIndex}} - {{columnIndex}}]</b>
          <small ng-if="rowIndex != columnIndex">[{{rowIndex}} - {{columnIndex}}]</small>

        </td>
    </tr>
  </table>

Überprüfen Sie: plnkr.co/52oIhLfeXXI9ZAynTuAJ


Wenn Sie mit Objekten arbeiten, möchten Sie einfache IDs so gut wie möglich ignorieren.

Wenn Sie die Klickzeile ändern, denke ich, dass Sie auf Ihrem Weg sind:

<li class="tutorial_title {{tutorial.active}}" ng-click="loadFromMenu(tutorial)" ng-repeat="tutorial in section.tutorials">

Außerdem denke ich, dass du dich vielleicht ändern musst

class="tutorial_title {{tutorial.active}}"

zu etwas wie

ng-class="tutorial_title {{tutorial.active}}"

Siehe http://docs.angularjs.org/misc/faq und suche nach ng-Klasse.





angularjs-ng-repeat