К сожалению, базовый компонент не генерирует никаких событий для этого условия. Это усложнит решение. Однако, когда значение вводится и происходит волшебство Typehead, вы можете дополнить эти события и перехватить их, чтобы обновить свой ngModel.
Я создал plnkr на основе вашего plnkr и, хотя не очищал, но это рабочий plnkr делать то, что вам нужно.
Суть этого заключается в следующем коде, однако вы можете разместить этот код там, где он лучше всего подходит
Объяснение ниже:
//Crux - this gets you the Typeahead object
var typeahead = element.data('ttTypeahead');
//This gets you the first
var datum = typeahead.dropdown.getDatumForTopSuggestion();
if (datum){
//you can do lot of things here however
//..I tried to - fill in the functionality best suited to be provided by Typeahead
//for your use case. In future if Typeahead gets this
//..feature you could remove this code
typeahead.eventBus.trigger("hasselections", datum.raw, datum.datasetName);
}
В приведенном выше коде вы также можете сохранить датум где-нибудь в области видимости, чтобы потом делать с ним все, что захотите. По сути, это ваш объект {num: 'Six'}
Затем вы также можете использовать ngBlur, чтобы установить его где-нибудь (однако созданный мной plnkr не нуждается в этих уловках.)
Затем дальше вниз - значение ngModel устанавливается, как показано ниже.
element.bind('typeahead:hasselections', function(object, suggestion, dataset) {
$timeout(function(){
ngModel.$setViewValue(suggestion);
}, 1);
//scope.$emit('typeahead:hasselections', suggestion, dataset);
});
person
bhantol
schedule
11.08.2014