AngularJng-옵션으로 범위 작성
페이지 수가 변수인 페이지 1~페이지 목록이 있는 선택 요소를 작성하려고 합니다.ng-options 식을 구성해서 필요한 숫자를 얻을 수 있도록 하는 방법을 모르겠습니다.지금까지 제가 가지고 있는 것은 다음과 같습니다.
<select ng-model="page" ng-options="???"></select>
ng-options 식에 무엇을 넣어야 제 선택을 만들 수 있을까요?
<select>
<option value="1">1</option>
...
<option value="35">35</option>
</select>
숫자 배열을 반환하는 함수를 만들어 어떻게든 사용할 필요가 있습니까?아니면 더 쉬운 방법이 있을까요?
어떤 도움이라도 주시면 대단히 감사하겠습니다.
감사해요.
편집
질문 투고 후 컨트롤러에 레인지라는 함수를 만들어 두 개의 숫자를 가져와서 그 범위의 모든 값을 가진 배열을 반환하는 방법을 알아냈습니다.
$scope.Range = function(start, end) {
var result = [];
for (var i = start; i <= end; i++) {
result.push(i);
}
return result;
};
그리고 HTML에서 나는 했다.
<select ng-name="page" ng-options="page for page in Range(1, pages)"></select>
이것이 가장 간단한 방법입니까, 아니면 더 나은 방법이 있습니까?
네 방식은 잘 된다.또 다른 방법은 필터를 사용하는 것입니다.그러면 컨트롤러를 Range로 오염시키지 않아도 됩니다.
JS:
var myApp = angular.module('myApp', []);
myApp.filter('range', function() {
return function(input, min, max) {
min = parseInt(min); //Make string input int
max = parseInt(max);
for (var i=min; i<max; i++)
input.push(i);
return input;
};
});
HTML:
<select ng-model="page" ng-options="n for n in [] | range:1:30"></select>
예: http://jsfiddle.net/N3ZVp/1/
추신: 메인 포스트의 예에서는var
앞에i
.그렇게i
이 예에서는 글로벌 변수로 선언되어 있습니다.
모든 것을 템플릿에 보관하기 위한 다른 솔루션:
<select>
<option ng-repeat="n in [].constructor(10) track by $index+1">{{$index+1}}</option>
</select>
아래와 같이 ng-model을 추가해 주세요.
<select ng-model="test" ng-options="n for n in [] | range:1:30"></select>
그 후에, 예시는 jsfiddle로 동작합니다.
for 루프가 없는 다른 접근방식은 다음과 같습니다.
컨트롤러:
$scope.arr = [];
$scope.arr.length = count;
뷰 바인딩:
ng-options="arr.indexof(i) for i in arr"
앤디의 해결책은 훌륭하지만, 그 범위는 거꾸로 갈 수 없습니다.개량된 버전은 다음과 같습니다.
/*
* Creates a range
* Usage example: <option ng-repeat="y in [] | range:1998:1900">{{y}}</option>
*/
myApp.filter('range', function() {
return function(input, start, end) {
start = parseInt(start);
end = parseInt(end);
var direction = (start <= end) ? 1 : -1;
while (start != end) {
input.push(start);
start += direction;
}
return input;
};
});
마티나의 대답에 기대고 있어범위의 마지막 값을 포함하도록 수정했습니다.
/*
* Creates a range
* Usage example: <option ng-repeat="y in [] | range:1998:1900">{{y}}</option>
*/
.filter('range', function () {
return function (input, start, end) {
var direction;
start = parseInt(start);
end = parseInt(end);
if (start === end) { return [start]; }
direction = (start <= end) ? 1 : -1;
while (start != end) {
input.push(start);
if (direction < 0 && start === end + 1) {
input.push(end);
}
if (direction > 0 && start === end - 1) {
input.push(end);
}
start += direction;
}
return input;
};
});
CoffeeScript의 경우:
app.filter 'range', ->
(input, min, max) ->
input.push(i) for i in [parseInt(min)..parseInt(max)]
HTML:
<select ng-options="n for n in [] | range:1:30"></select>
Javascript의 요지는 다음과 같습니다.
선택 항목에 자리 표시자를 추가하려면 아래 지정된 솔루션을 사용하십시오.먼저 필터를 이렇게 정의해야 합니다.
<select>
<option value="">-- Birth Year --</option>
<option ng-repeat="n in [] | range:1900:2000">{{n}}</option>
</select>
언급URL : https://stackoverflow.com/questions/11160513/angularjs-ng-options-create-range
'programing' 카테고리의 다른 글
jQuery 또는 플레인 JavaScript의 react js에서 변경 또는 입력 이벤트를 트리거하는 가장 좋은 방법은 무엇입니까? (0) | 2023.03.07 |
---|---|
Oracle 저장 프로시저에서 결과 세트 가져오기 (0) | 2023.03.07 |
ng-repeat과 ng-animate를 사용하여 목록을 정렬하려면 어떻게 해야 합니까? (0) | 2023.03.07 |
java9에서 모듈 읽기 패키지 오류를 해결하는 방법 (0) | 2023.03.07 |
React 어플리케이션의 Firebase 어플리케이션은 어디서 초기화합니까? (0) | 2023.03.07 |