>php教程 >PHP开发 >AngularJS는 ng-Options에 인덱스를 추가하는 솔루션을 구현합니다.

AngularJS는 ng-Options에 인덱스를 추가하는 솔루션을 구현합니다.

高洛峰
高洛峰원래의
2016-12-07 17:00:031755검색

이 기사의 예에서는 ng-Options에 인덱스를 추가하는 AngularJS의 솔루션을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

Angularjs 교환 그룹의 한 어린이가 Angularjs의 ng-Repeat와 같은 Angular select의 ng-Options에 인덱스 $index를 추가하는 방법을 물었습니다.

사실 이 문제에 대해 Angular 자체에서는 $index 등의 변수를 제공하지 않고 사용합니다. 그러나 이것이 우리가 이 문제에 대한 해결책을 가지고 있지 않다는 것을 의미하지는 않습니다.

이 문제를 관점에서 보면 js 배열의 첨자만 있으면 되기 때문에 객체에 첨자를 추가할 수 있다면 표현식을 옵션의 레이블로 사용하면 문제를 해결할 수 있습니다.

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

js:


안타깝게도 JavaScript를 키/값 개체로 사용하면 키 순서가 정렬되지 않습니다. 따라서 순서가 지정되지 않은 첨자는 다음과 같이 표시됩니다.

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


이 문제는 해결할 수 없습니다. 다행히 블로거는 또 다른 트릭을 가지고 있습니다. ngOptions는 Angularjs 필터를 지원하므로 데이터 소스 개체에 주문 필드를 추가하여 아래 첨자를 일련 번호로 표시할 수 있습니다. 그리고 2년 전의 Angular 문제에서 Angular가 문제를 해결했으며 옵션이 아래 첨자 순서로 배열을 생성하는 것을 볼 수 있습니다.

html:

<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>


js:

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


이제 옵션이 질서정연하게 생성되었으니 드디어 완벽하게 해결할 수 있게 되었으니 이번 글도 마치겠습니다. 마지막에 실행 가능한 데모플nkr ngOptions 인덱스가 첨부되어 있습니다.

위는 ng-Options에 인덱스를 추가하는 AngularJS 솔루션의 내용입니다. 자세한 내용은 PHP 중국어 웹사이트(www. php.cn)!

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;
     });
    };
   }
]);

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.