Heim > php教程 > PHP开发 > Hauptteil

AngularJS implementiert eine Lösung zum Hinzufügen eines Index zu ng-Options

高洛峰
Freigeben: 2016-12-07 17:00:03
Original
1710 Leute haben es durchsucht

Das Beispiel in diesem Artikel beschreibt die Lösung des Hinzufügens eines Index zu ng-Options in AngularJS. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Ein Kind in der Angularjs-Austauschgruppe fragte, wie man einen Index $index zu den ng-Options von Angular select wie ng-Repeat von Angularjs hinzufügen kann.

Tatsächlich stellt Angular selbst für dieses Problem keine Variablen wie $index zur Verfügung. Das heißt aber nicht, dass wir keine Lösungen für dieses Problem haben.

Um dieses Problem ins rechte Licht zu rücken: Alles, was wir brauchen, ist der Index des js-Arrays. Wenn wir also dem Objekt einen Index hinzufügen können, kann die Verwendung eines Ausdrucks als Beschriftung der Option das Problem lösen.

Aber der erste Eindruck erinnert mich daran, dass das js-Array ursprünglich ein Schlüssel-/Wertobjekt ist, der Schlüssel jedoch der Array-Index ist, sodass wir das folgende Design haben:

html:

<pre class="brush:php;toolbar:false">{{ a | json }}
Nach dem Login kopieren


js:

$scope.getDesc1 = function(key, value) {
  return (parseInt(key, 10) + 1) + "->" + value.field;
};
Nach dem Login kopieren

Wenn Sie JavaScript als Schlüssel-/Wertobjekt verwenden, sind die Schlüssel leider ungeordnet . Daher werden die ungeordneten Indizes wie folgt angezeigt:


<select ng-model="a" ng-options="l.field as getDesc1(key,value) for (key,value) in t "
 class="ng-valid ng-dirty">
 <option value="0" >1->jw_companyTalent</option>
 <option value="1" >2->jw_reportgroup</option>
 <option value="10" >11->jw_ads</option>
 <option value="11" >12->jw_jobcomment</option>
 <option value="12" >13->jw_companyInfo</option>
 ....
</select>
Nach dem Login kopieren

Das kann also nicht gelöst werden. Glücklicherweise hat der Blogger einen weiteren Trick: ngOptions unterstützt den Angularjs-Filter, sodass wir dem Datenquellenobjekt ein Bestellfeld hinzufügen können, um den Index als Seriennummer zu markieren. Und Sie können in einem Angular-Problem von vor 2 Jahren sehen, dass Angular das Problem behoben hat und die Option das Array in tiefgestellter Reihenfolge generiert.

html:

<pre class="brush:php;toolbar:false">{{ b | json }}
Nach dem Login kopieren

js:


var app = angular.module(&#39;plunker&#39;, []);
app.controller(&#39;MainCtrl&#39;, function($scope) {
   $scope.t = [{
    "field": "jw_companyTalent"
   }, {
    "field": "jw_reportgroup"
   }];
   $scope.getDesc = function(l) {
    return l.order + "->" + l.field;
   };
}).filter("index", [
   function() {
    return function(array) {
     return (array || []).map(function(item, index) {
      item.order = index + 1;
      return item;
     });
    };
   }
]);
Nach dem Login kopieren

Jetzt werden die Optionen geordnet generiert. Endlich können wir es perfekt lösen, sodass auch dieser Artikel zu Ende geht. Am Ende ist der ausführbare demoplnkr ngOptions-Index angehängt.

Das Obige ist der Inhalt der AngularJS-Lösung zum Hinzufügen eines Index zu ng-Options. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www. php.cn )!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!