6

Używam UI-Select, zauważyłem, że kliknięcie dowolnego tagu sprawia, że ​​są niebieskie, co nie ma celu dla tego, co chciałbym zrobić. Chciałbym je usunąć po kliknięciu. Po inspekcji zauważyłem „x”, która odpala następujący:Angular UI Wybierz usuń element po kliknięciu

ng-click="$selectMultiple.removeChoice($index)" 

Robi trochę kopania znalazłem szablon, gdzie jest to wystrzelone, to „match-multiple.tpl.html”. Skopiowałem ng-click do danych wejściowych, czyniąc to następująco.

<span class="ui-select-match"> 
    <span ng-repeat="$item in $select.selected"> 
    <span 
     class="ui-select-match-item btn btn-default btn-xs" 
     tabindex="-1" 
     type="button" 
     ng-disabled="$select.disabled" 

     ng-click="$selectMultiple.removeChoice($index)" 
     ng-class="{'btn-primary':$selectMultiple.activeMatchIndex === $index, 'select-locked':$select.isLocked(this, $index)}" 
     ui-select-sort="$select.selected"> 
     <span class="close ui-select-match-close" ng-hide="$select.disabled" ng-click="$selectMultiple.removeChoice($index)">&nbsp;&times;</span> 
    <span uis-transclude-append></span> 
    </span> 
</span> 
</span> 

ten złamał system tagów (patrz zdjęcie) enter image description here

EDIT - próbowałem następujące, błąd zniknął, ale kliknięcie nic nie robi.

 ng-click="$selectMultiple.activeMatchIndex.removeChoice($index)" 

Jak mogę dołączyć NG-cick do tagu w przeciwieństwie do 'X'?

Odpowiedz

3

Jesteś na właściwej linii. Nie widzę twojego pełnego kodu (w tym kodu Angular), więc trudno jest zrozumieć, dlaczego to nie działa, jednak this Fiddle pokazuje działający przykład - dodaj kilka nazw do ui-select, a następnie kliknij gdziekolwiek na nazwie (nie tylko "x"), aby je usunąć.

UI-select jest skonfigurowany w następujący sposób:

<ui-select multiple tagging ng-model="vm.selected" theme="bootstrap"> 
    <ui-select-match placeholder="Pick one...">{{$item.value}}</ui-select-match> 
    <ui-select-choices repeat="val in vm.values | filter: $select.search track by val.value"> 
     <div ng-bind="val.value | highlight: $select.search"></div> 
    </ui-select-choices> 
    </ui-select> 

Poniższy kod przesłania domyślny „bootstrap/match-multiple.tpl.html” szablon ze zwyczajem, który posiada zdarzenie ng kliknij nadrzędny span (tak jak ty) - zauważ, że było już ng-kliknięcie na rozpiętości ng-click="$selectMultiple.activeMatchIndex = $index;", musiałem usunąć to i zastąpić je ng-click="$selectMultiple.removeChoice($index)". Ten blok kodu mówi ui-select, aby używał tego niestandardowego szablonu zamiast domyślnego:

app.run(['$templateCache', function($templateCache) { 
    $templateCache.put('bootstrap/match-multiple.tpl.html', 
    '<span class="ui-select-match">' + 
     '<span ng-repeat="$item in $select.selected track by $index">' + 
      '<span ' + 
       'ng-click="$selectMultiple.removeChoice($index)" ' + 
       'class="ui-select-match-item btn btn-default btn-xs" ' + 
       'tabindex="-1" ' + 
       'type="button" ' + 
       'ng-disabled="$select.disabled" ' + 
       'ng-class="{\'btn-primary\':$selectMultiple.activeMatchIndex === $index, \'select-locked\':$select.isLocked(this, $index)}" ' + 
       'ui-select-sort="$select.selected">' + 
      '<span class="close ui-select-match-close" ng-hide="$select.disabled" ng-click="$selectMultiple.removeChoice($index)">&nbsp;&times;</span>' + 
      '<span uis-transclude-append></span>' + 
     '</span>' + 
     '</span>' + 
    '</span>'); 
}]); 
+0

Dziękuję za poświęcenie czasu na sprawdzenie tego pytania, ale jest ono dość stare. Płynę teraz w React land: D hah – Mintberry

+2

Bez obaw :) Miał kilka widoków, więc mam nadzieję, że odpowiedź pomoże także innym –

Powiązane problemy