在angular.js工厂中使用$ http

bab*_*dev 5 angularjs

在我的应用程序中,我使用angular.js和jquery ui自动完成.我遇到了与此处讨论的相同的问题. 对我来说,接受的答案很有用,而且直到今天我需要用$ http ajax调用替换静态数组值.我试图将$ http作为参数传递给父函数,但我得到"未知提供者:autoCompleteProvider < - autoComplete"

我的问题是,如何在不重写或更改当前解决方案的情况下使用$ http?

asg*_*oth 12

您需要在服务的getSource()函数中添加回调引用:

app.factory('autoCompleteDataService', ['$http', function($http) {
   return {
       getSource: function(callback) {
          var url = '...';
          $http.get(url).success(function(data) {
             callback(data);
          }
       }
   }
}]);
Run Code Online (Sandbox Code Playgroud)

如果您的服务器返回json,您也可以使用$ http.jsonp.不要忘记JSON_CALLBACK参数.

在您的指令中,您需要添加回调函数本身:

...
autoCompleteDataService.getSource(function(data) {
   elem.autocomplete({
         source: data
         minLength: 2
   });    
});
Run Code Online (Sandbox Code Playgroud)