2014-11-04 100 views
1

如何获得在角JS的$ http服务,然后调用它让我的自定义asyncAction函数调用内部功能。有没有HTML参与(引导???)

编辑:可以把一些虚拟的HTML使它工作触发控制器东西

我在http://jsfiddle.net/smartdev101/bdmkvr6g/

asyncAction: function(resultFunction, faultFunction) { 

    $http.get("https://api.github.com/users/angular") 
    .success(function(data, status, headers, config) { 
    // this callback will be called asynchronously 
    // when the response is available 
     console.log(data); 
    }) 
    .error(function(data, status, headers, config) { 
    // called asynchronously if an error occurs 
    // or server returns response with an error status. 
    }); 
}, 

一些进步的jsfiddle - 更新小提琴,增加了一些html标签,使其工作,但

有人可以找到我的方式,而不必在我的代码中插入标记,甚至触发AttendeeProxyController我自己没有这个ng-controller标签????我更喜欢全手动启动和控制器触发过程。

或横向思维......我并不需要事件此控制器,它的存在,这样我可以纯粹只是在JavaScript中获得的$ HTTP访问,而HTML?

<span id="attendeeProxyController" ng-controller="AttndeeProxyController"></span> 
+0

,可以考虑添加一些进一步的背景下,以你的问题。我的假设是很多Javascript开发人员对PureMVC不熟悉。我曾经在Actionscript中使用PureMVC,坦率地说,您似乎不需要在AngularJS应用程序中使用PureMVC(除非您将Angular添加到现有的PureMVC应用程序中)。在AngularJS中,你会向'Angular控制器,服务等注入类似'$ http'的东西。对我来说,不清楚的是PureMVC在Javascript中的工作方式< - 如果你能说明一下,它可能有助于找到你的解决方案。 – 2014-11-04 01:14:10

+0

无论使用什么框架,它都必须通过手动引导和获取$ http来完成,它可能是Backbone之类的框架,它是一个框架不可知的问题。 – user2727195 2014-11-04 01:18:18

+0

很好的解释。我可能已经过度了,但我认为你的原始问题不是很清楚,直到你添加了你的最新评论;) – 2014-11-04 01:22:03

回答

2

或横向思维......我不知道事件需要这个控制器,它的存在,这样我可以纯粹只是在JavaScript中获得的$ HTTP访问,而HTML?

是的,虽然我建议反对它可能做

var $http = angular.injector(["ng"]).get("$http"); 
// use $http here 

这将让你一个直销参考$ HTTP,您可以使用。然而,它违背了依赖注入的Angular方式,如果你不小心的话,它通常会更难测试和更难推理代码。

+0

你是对的,但我有一个可管理的模块化体系结构,围绕使用框架和库(如Backbone或puremvc)构建。感谢@Benjamin的答案,它的工作原理:) – user2727195 2014-11-04 02:29:59

+0

'变量$ routeProvider = angular.injector([ “NG”])获得( “$ routeProvider”);'可能得到这个??? – user2727195 2014-11-04 04:36:13

0

像@Benjamin说,你可以使用invoke自动注入依赖于你工作。

var $injector = angular.injector(["ng"]); 
$injector.invoke(function($http){ 
    $http.get("https://api.github.com/users/angular").success(function(data){ 
     console.log(data); 
    }).error(function(data){ 
     console.log(data); 
    }); 
}); 

Here is $injector document.

+0

不错...... – user2727195 2014-11-04 03:11:37