2015-04-16 14 views
5

Sto cercando di utilizzare un pulsante di aggiunta all'interno delle opzioni, ma il problema è che ng-clic si attiva ma l'opzione non è selezionata.Angularjs: Ui-select ng-click in ui-select-choices

<ui-select ng-model="datactrl.newservice.selected" theme="selectize" ng-disabled="disabled" style="width: 100%;"> 
    <ui-select-match placeholder="..."> 
     <span ng-bind-html="$select.selected.name"></span>   
    </ui-select-match> 
    <ui-select-choices repeat="service in data.base_services | filter: $select.search"> 
     <span ng-bind-html="service.name | highlight: $select.search"></span> 

     <!-- HERE NOT --> 
     <a href="" class="pull-right" ng-click="setnewservice()"> 
      <i class="glyphicon glyphicon-plus-sign"></i> 
     </a>  
     <!-- ### --> 

    </ui-select-choices> 
</ui-select>        


<!-- here obviously works --> 
<a href="" class="pull-right" ng-click="setnewservice()"> 
    <i class="glyphicon glyphicon-plus-sign"></i> 
</a> 

posso inviare qualche parametro alla funzione e gestire questo caso anche selezionando il link cliccato di tale indice voce in modo che il modello con prendere il valore corretto, o come nel campione di lavoro sopra portarlo fuori ..

ma come posso gestirlo correttamente, interrompere l'evento, selezionare l'opzione senza inviare l'oggetto o alcuni dei suoi attributi, quindi fare il resto?

$scope.setnewservice = function ($event) { 
    $event.stopPropagation(); 
    // ?? 
} 
+0

Ho una configurazione simile, mettendo il ng-click come un attributo di noi-seleziona-scelte entrambi seleziona l'elemento e chiama il metodo –

risposta

4

Usa ng-cambiamento sul ui-selezionare non ng clic sui ui-select-scelte. Modificare questa:

ng-click="setnewservice() 

a:

ui-select ng-model="datactrl.newservice.selected" theme="selectize" ng-disabled="disabled" style="width: 100%;" ng-change="setnewservice()> 
+0

Io raccomanderei di usare on-select vs ng-change specialmente se si ha un typeahead altrimenti si accenderà su ogni carattere digitato nella casella di selezione. – goodies4uall

+0

Certo, se vuoi usare JavaScript quando è stato selezionato del testo. Ma non era quello che chiedeva @daniel. La direttiva ngChange è più pertinente. L'espressione viene valutata immediatamente, a differenza dell'evento JavaScript che si attiva solo alla fine di una modifica. Questo è necessario affinché le scelte di ui-select funzionino. http://embed.plnkr.co/Ufhb0IfzrTlG3XLY2ahh/ – Fergus

0

è possibile aggiungere l'attributo di selezione per il tag in questo modo:

on-select="setnewservice($item, $model)"