Próbuję zaimplementować autouzupełnianie jquery w Angular dyrektywy. Dane, które otrzymuję dla źródła pochodzą z odpowiedzi websocket. To nie działa i myślę, że opóźnienie odpowiedzi jest przyczyną problemu.Angularjs jquery Autouzupełnianie interfejsu użytkownika
Doceniam, jeśli ktoś może rzucić nieco światła na kod poniżej. Czy istnieje jakaś elegancka technika, aby osiągnąć to za pomocą jakiegoś żądania/odpowiedzi lub obietnicy?
app.directive('autoComplete', function($rootScope, locationAutoCompleteService, $timeout, $http, programLocationModel) {
return {
restrict: 'A',
scope: {
serviceType: '@serviceType'
},
link: function(scope, elem, attr, ctrl) {
var autoItem = [];
scope.change = function() {
locationAutoCompleteService.unSubscribe();
var service = locationAutoCompleteService.getServiceDefinition();
service.filters.pattern = scope.inputVal;
locationAutoCompleteService.subscribe();
};
scope.$on('myData', function(event, message){
if (message !== null && message.results !== null) {
autoItem = [];
for (var i = 0; i < message.results.length; i++) {
autoItem.push({ label: message.results[i].name, id: message.results[i].id });
}
}
});
elem.autocomplete({
source: autoItem,
select: function(event, ui) {
$timeout(function() {
elem.trigger('input');
}, 0);
}
});
}
};
});
Dzięki za odpowiedzi, ale przykład dałeś pracuje z danych statycznych. Kod, który wkleiłem działa wspaniale z macierzą statyczną. Mam problem z aktualizowaniem tablicy z odpowiedzi z gniazda internetowego. –
moje złe ... Będę aktualizować –
To podejście nie działa, jak się boję. –