2014-12-08 10 views
6

Si consideri il seguente nel corpo del mio file html:Aggiornamento del modello da un typeahead-on-select

<html> 
... 
<body> 
... 
<div class='container-fluid' ng-controller="TypeaheadCtrl"> 
<input type="text" ng-model="selected" typeahead="name as entry.name for entry in entries | filter:{name: $viewValue} | limitTo:8" 
       typeahead-on-select='onSelect($item, $model, $label)' 
       class="form-control"> 

{{selection_made}} 
</div> 
<body> 
</html> 

dove entries sono popolate da qualche altra parte. E poi questo nel controller:

angular.module('ui.bootstrap.demo').controller('TypeaheadCtrl', function($scope, $http) { 
     ... 
     $scope.onSelect = function ($item, $model, $label) { 
       $scope.$selection_made = $item; 
     }; 
... 
}); 

Ho il completamento automatico che funziona, ma il callback di selezione non sembra funzionare bene. Mi aspettavo che {{selection_made}} visualizzasse tutto ciò che è selezionato, ma viene invece visualizzato il testo letterale {{selection_made}}. Perché? Cosa mi manca?

Nota: ho utilizzato this answer come riferimento.

+0

Grazie @Satpal, sì, ho provato che senza fortuna (ho la stessa cosa) –

+0

Se si mette un debugger di sopra del scope.selection_made = $ voce $; linea e si ispeziona l'articolo, il modello e l'etichetta. Contengono le informazioni che ti aspetti? – KreepN

+0

@KreepN Sì, ho appena controllato e lo fa. Tranne il modello, che sembra essere "indefinito". –

risposta

1

Prova questo,

angular.module('ui.bootstrap.demo').controller('TypeaheadCtrl',function($scope, $http) { 
    ... 
    $scope.onSelect = function ($item, $model, $label) { 
      $scope.$selected = $item; 
    }; 
... 
}); 
Problemi correlati