Ich versuche, Autovervollständigung von jquery in einer Angular-Direktive zu implementieren. Die Daten, die ich für die Quelle erhalte, stammen aus der Websocket-Antwort. Es funktioniert nicht und ich denke, Antwortverzögerung verursacht hier das Problem.Angularjs jquery UI Autovervollständigung
Ich freue mich, wenn jemand etwas Licht auf Code unten beleuchten könnte. Gibt es eine elegante Technik, um dies mit einer Art von Anfrage/Antwort oder Versprechen zu erreichen?
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);
}
});
}
};
});
Dank für die Beantwortung, aber beispielsweise haben Sie gegeben mit statischen Daten arbeiten. Der Code, den ich eingefügt habe, funktioniert hervorragend mit statischen Arrays. Ich habe Probleme beim Aktualisieren des Arrays aus der Web-Socket-Antwort. –
mein Schlechter ... Ich werde aktualisieren –
Dieser Ansatz scheint nicht zu funktionieren, ich habe Angst. –