2014-10-15 7 views
48

में चयनित विकल्प साफ़ करें कोई भी जानता है कि कोणीय में ui-select बॉक्स के चयनित मान को कैसे साफ़ किया जाए?ui-select कोणीय

मैं select2 की कार्यक्षमता चाहता हूं जहां आपके पास चयन बॉक्स में एक छोटा एक्स है। ऐसा लगता है कि इसे अनुमति-स्पष्ट विधि मिली है जिसे 2 चुना गया है।

उत्तर

90

ui का चयन मैचों करता है कि के लिए एक विकल्प नहीं है allow-clear आपके लिए चीज, आपके पास दाईं ओर एक्स होगा और आप इसे क्लिक करके इसे साफ़ कर सकते हैं। 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

क्या आप जानते हैं कि साफ़ 'एक्स' बटन को अनुमति देने के उस ईवेंट को कैसे प्राप्त किया जाए? यह मुझे निर्भर क्षेत्रों को रीसेट करने में मदद करेगा –

+0

हालांकि यह दस्तावेज़ीकरण में स्पष्ट है, लेकिन यह बहुत परेशान है कि आप केवल एक बुलियन का उपयोग कर सकते हैं लेकिन अनुमति-स्पष्ट विकल्पों के लिए कोई कॉलबैक नहीं है ... तो यह कॉलबैक को आग लगाना बहुत बेकार है और संबंधित डेटा के साथ कुछ करो। – burzum

29

जब आप चयन प्रदर्शित करते हैं तो आप एक छोटा एक्स बटन जोड़ सकते हैं।

<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

@ exiadbq के समाधान का एक सरल तरीका में एक ही सुविधा प्रदान करता है। – Jocelyn

+3

हाँ जो काम करता है - हालांकि, मैं बस जोड़ना चाहता हूं, अब एक अंतर्निहित फ़ंक्शन है इसलिए आपको नियंत्रक को अतिरिक्त विधि जोड़ने की आवश्यकता नहीं है। आप बस 'ng-click = "$ select.clear ($ event)" का उपयोग कर सकते हैं और यह बहुत अच्छा काम करेगा;) यह प्रतिपादन और कॉलबैक अपडेट करने के माध्यम से भी जाता है। –

6

यदि आप डिज़ाइन परिप्रेक्ष्य से बूटस्ट्रैप का उपयोग कर रहे हैं, तो आप एक एफए-निकालने आइकन का भी उपयोग कर सकते हैं।

इसके अतिरिक्त, उपयोगिता परिप्रेक्ष्य से, आप बाईं ओर निकालें आइकन को संरेखित करना चाह सकते हैं।

जे एस:

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

सीएसएस:

.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; 
} 

निर्देश कोड पर:

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

यह वास्तव में एक अच्छा समाधान इगोर है। आपका बहुत बहुत धन्यवाद। निक 128 द्वारा सुझाए गए एक से बेहतर तरीका दिखता है। मैंने केवल '.select2 .clear-btn' पर सीएसएस को बदल दिया क्योंकि मैं दाईं ओर ** एक्स ** देखना चाहता था और मैंने 'बाएं: -2px;' 'दाएं: 20px;' के लिए बदल दिया। मुझे 'उपयोग करने की आवश्यकता नहीं थी।स्पष्ट-बीटीएन ऑफसेट 'बिल्कुल। – sebadagostino

+0

बेशक आप अभी भी @exiadbq का उल्लेख कर सकते हैं, लेकिन मैं व्यक्तिगत रूप से नहीं करता क्योंकि तत्व संरचना और दृश्य शैली स्पष्ट बटन के साथ वास्तव में बेहतर है। –

0

नोट: अगर हम उस मामले में टैगिंग और टैगिंग-लेबल = "false" का इस्तेमाल किया की अनुमति देने के साफ कार्यक्षमता काम नहीं।

कस्टम स्पष्ट कार्यक्षमता

एचटीएमएल कोड

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

नियंत्रक कार्रवाई कोड

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