इस तरह आप यह कर सकते हैं है:
app.factory('autoCompleteDataService', ['$http', function($http) {
return {
getSource: function() {
return function(request, response) {
$http.get(url).success(function(data) {
response(data);
});
}
}
}
}]);
हालांकि, अगर आप ग्राहक के पक्ष डेटा खोज करने के लिए पहले पूरे डेटा डाउनलोड करने और स्वत: पूर्ण विजेट अनुमति देना चाहते हैं, यह एक उदाहरण है कि कैसे आप यह कर सकते है:
app.directive('autoComplete', function(autoCompleteDataService, $http) {
return {
restrict : 'A',
link : function(scope, elem, attr, ctrl) {
autoCompleteDataService.getData(function(err, data) {
if (err) {
console.log("Could not retrieve data.");
return;
}
elem.autocomplete({
minLength: 0,
source: data,
focus: function(event, ui) {
elem.val(ui.item.label);
return false;
},
select: function(event, ui) {
elem.val(ui.item.label);
return false;
}
})
.data("ui-autocomplete")._renderItem = function(ul, item) {
return $("<li>")
.append("<a>" + item.label + "</a>")
.appendTo(ul);
};
});
}
};
});
app.factory('autoCompleteDataService', ['$http', '$rootScope', function($http, $scope) {
return {
getData: function(callback) {
if ($scope.data) {
return callback(null, $scope.data);
}
$http.get('URL')
.success(function(data) {
$scope.data = data;
return callback(null, data);
})
.error(function(data) {
return callback(true, null);
});
}
}
}]);
ने इसे किया और अब मुझे "टाइप एरर: यह स्रोत एक फ़ंक्शन नहीं है" –
क्या आप एक उदाहरण स्थापित कर सकते हैं, क्योंकि मुझे नहीं पता कि आप $ hhtp सेवा – asgoth
का उपयोग कैसे कर रहे हैं, मुझे खेद है कि मेरे पास टाइपो, मैंने इसे ठीक किया और अब कोई त्रुटि नहीं है, लेकिन कोई डेटा रिटर्न भी नहीं है। मैं ऊपर दिए गए आपके उत्तर में $ http सेवा का उपयोग करता हूं। –