gpt4 book ai didi

angularjs - 将参数从 Controller 传递到 Angular 中的服务

转载 作者:行者123 更新时间:2023-12-02 01:37:08 24 4
gpt4 key购买 nike

我正在尝试将参数从 Controller 传递到 Angular 中的服务。这是 Controller :

angular.module('CityCtrl', []).controller('CityController',['$scope', '$http', function($scope,$http,CityService){

$scope.data = "unknown";

$http.jsonp('http://api.openweathermap.org/data/2.5/weather?lat=35&lon=139&callback=JSON_CALLBACK').success(function(data){
$scope.data=data;
});
console.log($scope.name);
if($scope.name){
$scope.weather = CityService.get($scope.name);
}

$scope.update = function (zip) {
$scope.zip = zip;
console.log(zip);
$scope.weather = CityService.get({zip: zip});
alert("Hello, " + zip);
}
}]);

这是服务:

angular.module('CityService', []).factory('City', '$scope'['$http', function($scope,$http) {

return {
get : function() {
return $http.get('/cities/' + zip);
}
}
}]);

当我检查控制台时,它正在记录正确的值,但是,当它尝试运行该服务时,它说:

Cannot read property 'get' of undefined

出于某种原因,zip 没有传递给服务。知道断开连接在哪里吗?

最佳答案

您需要注入(inject) City 服务,当使用显式依赖注释时,它是all or none 规则,您不能只指定部分依赖。

angular.module('CityCtrl', []).controller('CityController',
['$scope', '$http', 'City'
function($scope, $http, City){

此外,您不能在工厂中注入(inject) $scope(它仅可用于注入(inject) Controller ,对于指令,您将其作为链接函数中的参数获取)并且看起来您不需要好吧。

angular.module('CityService', []).factory('City', ['$http', function($http) {

return {
get : function(zip) {
return $http.get('/cities/' + zip);
}
}
}]);

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

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