我想忘记" jQuery"因为我喜欢" AngularJS"。但是,我需要知道如何使用在我的应用程序的其他地方包含AngularJS的独立任务。 在这种情况下,我想使用" $ https AngularJS"例如,用于导入JavaScript文件的函数。
示例(以前用 jQuery 执行):
$.get("url.js", function(data){ eval(data) }); //ok
console.info($.get); //code code code... ok
示例(如 AngularJS 中所述)
//In a controller
App.controller('Ctrllr', ['$http', function ($http) {
$http.get("url.js").success(function(data){
eval(data); //ok
});
console.info($http); //code code code.... ok
})
//outside
$http.get("url.js"); //$http is undefined
//How to use $http here?
正如您在上次通话中看到的那样,$ http不在进程中。现在,想知道如何使用类$ http或控制器/应用程序之外的其他Angular工具?
答案 0 :(得分:4)
当然,您可以在run block
中使用$ httpangular.module('myModule', [])
.run(function($http) {$http.get('/url').success(mySuccessCallback)}
但是你仍然必须在角度上下文(应用程序)中使用$http
因为注入$http
服务需要依赖注入
答案 1 :(得分:3)
使用此:
$http = angular.injector(["ng"]).get("$http");
答案 2 :(得分:1)
谢谢大家,我认为唯一的解决方案是声明一个全局变量,然后为这个变量分配一个控制器$ https
var myAjax;
App.controller('Ctrllr', ['$http', function ($http) {
myAjax = $http;
});
myAjax("url.js").success(function(code){eval(code)}
如果有人有更好的解决方案,欢迎。问候:)
答案 3 :(得分:0)
你做不到。但那很好,你不应该。
您应该做的是使用工厂设置服务,然后您的控制器或任何您想要的工具可以访问该工厂。工厂看起来像这样......
app.factory('service', ['$http', function($http) {
var service = {}
service.get = function() {
return $http.get('/url');
}
return service.
}]);
然后你可以把这个服务注入你想要的任何东西,并可以从那里调用get函数,这将为你返回承诺。
编辑:澄清一下,你不必回复你可以用你想象的承诺。