2014-02-12 204 views
1

我新的角度,我試圖構建我的應用程序下面https://github.com/angular-app/angular-appAngularJS:工廠和控制器

的問題是,當我確定我廠與控制器... app.service

angular.module("app.service", []) 
.factory('currencyService', function ($http, $q) { 
var getCurrency = function() { 
    var deferred = $q.defer(); 

    $http({ 
     url: baseUrl + "currency/GetAll/", 
     method: "GET" 
    }).success(function (data) { 
     deferred.resolve(data); 
    }).error(function (data, status, headers, config) { 

    }); 
    return deferred.promise; 
} 
}); 


controller : 
angular.module('vendor.controller.edit', 
[ 
    "acute.select", 
    "ui.bootstrap", 
    "ngRoute", 
    "app.service" 
]) 
.controller('vendorEditCtrl', ["$scope", "$routeParams", "$http", "$modal","currencyService", function ($scope, $routeParams, $http, $modal, currencyService)   { 
... 
} 

問題是控制器內部currencyService未定義... 有什麼想法爲什麼?

感謝任何人可以幫助!

+2

你不回來從你的工廠什麼? – CallumVass

回答

0

您需要實例化的服務,factory返回一個構造函數...或者你可以使用.service,而不是在錯誤的地方.factory

+0

和BiffBaffBoff說,你的服務不會返回任何東西 – doodeec

1

你的工廠的回報,所以它返回undefined

你應該這樣做:

angular.module("app.service", []) 
.factory('currencyService', function ($http, $q) { 
    var deferred = $q.defer(), 
     getCurrency = function() { 

     $http({ 
      url: baseUrl + "currency/GetAll/", 
      method: "GET" 
     }).success(function (data) { 
      deferred.resolve(data); 
     }).error(function (data, status, headers, config) { 
     }); 
    }) 

return deferred.promise; 
}); 
+0

謝謝你做的伎倆...我很愚蠢... – user2522221

3

一個工廠是一個被稱爲生成服務,所以角調用,那麼它使用的返回值來註冊您的服務方法。在你的例子中,你並沒有返回函數本身。這應該解決問題:

.factory('currencyService', function ($http, $q) { 
var getCurrency = function() { 
    var deferred = $q.defer(); 

    $http({ 
     url: baseUrl + "currency/GetAll/", 
     method: "GET" 
    }).success(function (data) { 
     deferred.resolve(data); 
    }).error(function (data, status, headers, config) { 

    }); 
    return deferred.promise; 
}; 
return getCurrency; 
}); 

注意我在實際返回函數的末尾添加了行。

它的定義方式,那麼您需要調用它是這樣的:

.controller("myController", ["currencyService", function(currencyService) { 
    currencyService().then(function(result)...); 
});