2014-11-04 102 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