为什么$ http在我的工厂中未定义?

时间:2015-10-01 19:06:57

标签: angularjs

编辑:此问题已弃用。请改为How to set a variable from an $http call then use it in the rest of the application WITHOUT making the whole application asynchronous

我有$http,但()未定义。我以为DI会为我定义它。

我做错了什么?我对Angular有什么根本的误解呢?

额外的parens URL导致在配置阶段调用函数我猜。但是angular.module('myApp').factory('Test',['$http'], { URL: (function ($http) { $http.get('http:www.myserver.com/api/thing').then(function (response) { }); })() // extra parens makes the function run right off the bat } ); 是我想要的整个应用程序的属性。

struct student
{
    int name;
    int address;

    void speak() 
    {
        /* code */
    }

};

int main()
{

    //code ..

    student.speak();

}

我该如何解决?

3 个答案:

答案 0 :(得分:1)

这种语法看起来不太合适。试试这样的事情

angular.module('myApp').factory('Test',['$http', function($http) {
}]);

答案 1 :(得分:1)

您的工厂定义错误。使用你拥有的内联依赖注入样式,第二个参数应该是一个数组,其最后一个元素是消耗先前依赖项的函数

angular
    .module('myApp')
    .factory('Test', ['$http', function ($http) {
        //return an object that represents your service's API
        return { 
            URL: function () {
              $http.get('http:www.myserver.com/api/thing').then(function (response) { });
            } //pass the actual function to invoke later
        };
    }]);

答案 2 :(得分:0)

我认为你的语法错误,应该是:

angular.module('myApp').factory('Test',['$http',function($http){
    return { 
        URL: function () {
          $http.get('http:www.myserver.com/api/thing').then(function (response) { });
        } //pass the actual function to invoke later
    };
}]);