gpt4 book ai didi

javascript - Angular : factory and controller

转载 作者:行者123 更新时间:2023-11-30 10:20:20 25 4
gpt4 key购买 nike

我是 Angular 的新手,我正在尝试按照 https://github.com/angular-app/angular-app 构建我的应用程序

问题是当我定义我的工厂和 Controller 时...应用服务

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) {
...
}

问题是 Controller 内部 currencyService 未定义...知道为什么吗?

感谢任何可以提供帮助的人!!

最佳答案

工厂是一种被调用来生成服务的方法,因此 Angular 调用它然后使用返回值来注册您的服务。在您的示例中,您没有返回函数本身。这应该可以解决问题:

.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)...);
});

关于javascript - Angular : factory and controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21727984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com