2014-10-15 3 views
48

각도로 ui 선택 상자의 선택된 값을 지우는 방법을 아는 사람이 있습니까?ui 선택 각도에서 선택된 옵션 지우기

selectbox에 작은 x가있는 곳에서는 select2의 기능을 원합니다. select2에 허용 된 명확한 방법이있는 것 같지 않습니다.

답변

90

당신을 위해, 당신은 x가 오른쪽에있을 것이고 당신은 이것을 클릭하여 지울 수 있습니다. https://github.com/angular-ui/ui-select/wiki/ui-select-match

빠른 예 :

<ui-select-match allow-clear="true" placeholder="Select or search a country in the list..."> 
    <span>{{$select.selected.name}}</span> 
</ui-select-match> 

근무 예 : http://plnkr.co/edit/DbbUE68QlNLjx97pBZ56?p=preview

+9

이것은 허용 된 대답이어야합니다. –

+2

허용 된 'x'버튼을 클릭하는 이벤트를받는 방법을 알고 계십니까? 그것은 종속 필드를 다시 설정하는 데 도움이 될 것입니다 –

+0

이것은 문서에서 명백한 반면 그것은 당신이 단지 부울을 사용할 수 있지만 허용 - 취소 옵션에 대한 콜백이 없다는 것을 귀찮게합니다 ... 그래서 콜백을 시작하는 것은 거의 쓸모가 없습니다 관련 데이터로 무언가를하십시오. – burzum

29

선택 사항을 표시 할 때 작은 X 버튼을 추가 할 수 있습니다.

<ui-select-match placeholder="Select or search a country in the list..."> 
    <span>{{$select.selected.name}}</span> 
    <button class="clear" ng-click="clear($event)">X</button> 
</ui-select-match> 

그런 다음 클릭 이벤트가 버블 링되는 것을 중지하고 열린 이벤트를 트리거합니다. 선택한 모델을 덮어 쓰면 필드가 지워집니다.

$scope.clear = function($event) { 
    $event.stopPropagation(); 
    $scope.country.selected = undefined; 
}; 

여기는 plnkr입니다. http://plnkr.co/edit/qY7MbR

+1

@

<ui-select-match placeholder=”Enter table…”> <span>{{$select.selected.description || $select.search}}</span> <a class=”btn btn-xs btn-link pull-right” ng-click=”clear($event, $select)”><i class=”glyphicon glyphicon-remove”></i></a> </ui-select-match> 

컨트롤러 액션 코드입니다. – Jocelyn

+3

그래, 작동하지만 - 추가하고 싶습니다, 이제 내장 함수가있어서 컨트롤러에 추가 메서드를 추가 할 필요가 없습니다. 'ng-click = "$ select.clear ($ event)"'를 사용하면 효과가 있습니다;) 이것은 또한 렌더링과 콜백을 업데이트하는 과정을 거칩니다. –

6

부트 스트랩을 사용하는 경우 디자인 측면에서 fa- 제거 아이콘을 사용할 수도 있습니다.

또한 사용 편의성 측면에서 제거 아이콘을 왼쪽에 정렬 할 수 있습니다.

JS :

<ui-select-match placeholder="Select or find..."> 
    <button class="clear-btn" ng-click="clear($event)"> 
     <span class="fa fa-remove"></span> 
    </button> 
    <span class="clear-btn-offset">{{$select.selected}}</span> 
</ui-select-match> 

CSS의 :

.select2 .clear-btn { 
    background: none; 
    border: none; 
    cursor: pointer; 
    padding: 5px 10px; 
    position: absolute; 
    left: -2px; 
    top: 1px; 
} 

.clear-btn-offset { 
    position: absolute; 
    left: 25px; 
} 

지시어 코드에 다음을 수행 UI - 선택 일치하는 옵션 allow-clear 있습니다

$scope.clear = function($event) { 
    $event.stopPropagation(); 
    // Replace the following line with the proper variable 
    $scope.country.selected = undefined; 
}; 
+0

이것은 정말 멋진 Igor 솔루션입니다. 고맙습니다. 이 방법은 Nic128에 의해 제안 된 것보다 좋아 보인다. '.select2 .clear-btn'에서 CSS를 변경 한 것은 ** X **를 오른쪽으로보고 싶었고'left : -2px; '를'right : 20px;'로 바꿨기 때문입니다. 나는'을 사용할 필요가 없었습니다.clear-btn-offset'을 사용합니다. – sebadagostino

+0

물론 @exiadbq에서 언급 한 내용을 사용할 수도 있지만 필자는 개인적으로 요소 구조와 비주얼 스타일이 명백한 버튼을 사용하면 더 좋기 때문에 개인적으로하지 않습니다. –

0

참고 : 우리가 할 수 맑은이 경우 태그 및 태그 라벨 = "false"로 사용하는 경우 기능이 작동하지.

사용자 정의 명확한 기능

HTML 코드 exiadbq의 솔루션은 간단한 방법으로 같은 기능을 제공합니다

function clear($event, $select){ 
//stops click event bubbling 
$event.stopPropagation(); 
//to allow empty field, in order to force a selection remove the following line 
$select.selected = undefined; 
//reset search query 
$select.search = undefined; 
//focus and open dropdown 
$select.activate(); 
}