gpt4 book ai didi

angularjs - 将 $http 和 $scope 注入(inject) Controller 中的函数

转载 作者:行者123 更新时间:2023-12-03 20:23:28 25 4
gpt4 key购买 nike

我之前在尝试将 $scope 和 $http 注入(inject) Controller 时问了一个类似的问题 Cannot call method 'jsonp' of undefined in Angular.js controller .现在我试图通过将代码移动到 Controller 内的函数中来稍微重构该代码。我遇到了类似的问题,似乎无法掌握 Angular 中依赖注入(inject)的机制。下面是我的新代码。 $scope 和 $http 都是未定义的。我试图做的是在 didSelectLanguage() 触发时发出一个 http 请求,并将结果数据从父 Controller 分配给 $scope 中的“image”变量。有人可以告诉我依赖注入(inject)在这个例子中应该如何工作吗?

angular.module('myApp.controllers', []).

controller('ImagesCtrl', ['$scope', '$http', function ($scope, $http) {



$scope.didSelectLanguage=function($scope, $http) {
console.log($scope);
$http.jsonp('http://localhost:3000/image?quantity=1&language='+this.language+'&Flag=&callback=JSON_CALLBACK')
.success(function(data){
$scope.image = data;
});

}

}])

最佳答案

创建 Controller 时:

angular.module('myApp.controllers', []).
controller('ImagesCtrl', ['$scope', '$http', function ($scope, $http) {
// ...
}]);

Controller 函数体内的东西自动访问 $scope$http因为 closures .因此,无需为 $scope 上的函数指定任何其他内容。可以访问这些东西:

angular.module('myApp.controllers', []).
controller('ImagesCtrl', ['$scope', '$http', function ($scope, $http) {

$scope.didSelectLanguage = function() {
$http.jsonp('http://localhost:3000/image?quantity=1&language=' + this.language + '&Flag=&callback=JSON_CALLBACK');
.success(function(data) {
$scope.$parent.image = data;
});
}

}]);

didSelectLanguage运行时,它会看到对 $http 的引用, 并从函数中伸手进入外部函数以获取引用的值; $scope 也是如此在成功回调中。

因此,简而言之,无需将任何参数传递给您的 didSelectLanguage。函数,在这种情况下也没有任何理由使用 $injector .

关于angularjs - 将 $http 和 $scope 注入(inject) Controller 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17478014/

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