gpt4 book ai didi

javascript - Angular.js 从外部 Controller 调用 $http.get

转载 作者:数据小太阳 更新时间:2023-10-29 04:22:44 27 4
gpt4 key购买 nike

我有一个 HTTP 资源,它返回数据库中排名前 10 的实体的 JSON 列表。我这样调用它:

var filter= "john";
var myApp = angular.module('myApp', []);
myApp.controller('SearchController', ['$scope','$http', function ($scope, $http) {
$http.get('/api/Entity/Find/' + filter). //Get entities filtered
success(function (data, status, headers, config) {
$scope.entities = data;
}).
error(function () {
});
}]);

有效!

但是...我怎样才能更改 filter 变量以更改查询?我是否应该重写整个 Controller 才能让它工作?

更新

很抱歉我的问题不够清晰。当我问这个问题时,我无法理解 AngularJS 的任何内容。

我的初衷是注入(inject)变量 $http,而不依赖为此创建 Controller 。

谢谢大家。

最佳答案

一个可能更好的方法

如果您不想将它放入 Controller 中,您可以将它注入(inject)到配方中(例如,提供者、工厂、服务): https://docs.angularjs.org/guide/providers

myApp.factory('getStuff', ['filter', '$http', function (filter, $http) {
//Blah
}]);

如果你想在任何 Angular 结构之外获取 $http 的实例,你可以执行如下所示的操作。

Dennis 给出的方法有效;但是,如果在引导 Angular 之前调用它,它将不起作用。此外,Derek 似乎对 Dennis 的方法有错误,因为他没有 jquery。

Exlord 提到的解决方案更好,因为它没有那个问题,并且更合适:

$http = angular.injector(["ng"]).get("$http");

解释:

Angular 注入(inject)器是:

object that can be used for retrieving services as well as for dependency injection

https://docs.angularjs.org/api/ng/function/angular.injector

函数 angular.injector 将模块作为参数并返回注入(inject)器的实例。

所以在这种情况下,您检索 ng 模块(angular 的)的注入(inject)器,然后检索服务 $http。

注意:像这样使用注入(inject)器时要记住的一件事是,在我自己的发现中,您似乎需要确保在注入(inject)中包含您“获得”所需的模块。例如:

angular.injector(['ng', 'ngCordova']).get('$cordovaFileTransfer')

关于javascript - Angular.js 从外部 Controller 调用 $http.get,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24051335/

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