gpt4 book ai didi

javascript - 从 Controller 将参数传递给 Angular 服务?

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

我是一个棱 Angular 分明的新人。我希望将参数传递给根据这些参数从服务器获取数据的服务。例如,如果我想传递一个书名字符串,然后在服务中使用它与请求 url 连接。文档在这个主题中没有清楚地显示,我在其他资源中找不到有用的示例。

假设,这是 Controller :

app.controller('BookController', ['$scope', '$routeParams', 'books', function($scope, $routeParams, books) {
// sending params to books service before a successful return
books.success(function(data) {
$scope.book = data[$routeParams.bookId];
});

这就是服务

app.factory('books', ['$http', function($http) {
// var url = 'http://...' + ParamFromController + '.json'
return $http.get(url)
.success(function(data) {
return data;
})
.error(function(err) {
return err;
});
}]);

那么,我怎样才能将参数发送到“书籍”服务,然后在服务中使用它呢?非常感谢。

最佳答案

您可以将您的服务声明为:

app.factory('books', ['$http', function($http) {
// var url = 'http://...' + ParamFromController + '.json'
return {
getVal: function(url,options){
return $http.get(url,options)
}
}
}]);

并在您的 Controller 中使用它并提供适当的参数以传递给“书籍”服务:

app.controller('BookController', ['$scope', '$routeParams', 'books', function($scope, $routeParams, books) {
// sending params to books service before a successful return
books.getVal('api/activity.json',{'name':'abc'}).success(function(data) {
$scope.book = data[$routeParams.bookId];
});

此外,不要在您的服务 Controller 函数 中同时使用.success() 回调。 books 服务正在返回一个 promise ($http 隐式返回一个 promise ),您可以在 Controller 中处理它。

关于javascript - 从 Controller 将参数传递给 Angular 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30977199/

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