我正在AngularJS中編寫應用程序。我需要公開一個將被外部庫調用的函數。如何在AngularJS中公開公共函數
我需要我的第三方庫調用
executeFunction(param)
,並相應地有我的角度應用程序響應。
我的第一個想法是創建一個指令,我可以應用到一個頁面,告訴頁面監聽這個事件(函數)被調用,但我似乎無法包裝我的頭如何做到這一點。
我正在AngularJS中編寫應用程序。我需要公開一個將被外部庫調用的函數。如何在AngularJS中公開公共函數
我需要我的第三方庫調用
executeFunction(param)
,並相應地有我的角度應用程序響應。
我的第一個想法是創建一個指令,我可以應用到一個頁面,告訴頁面監聽這個事件(函數)被調用,但我似乎無法包裝我的頭如何做到這一點。
你可以讓一個factory
或service
或者更強大的解決方案將是使AB完整模塊
angular.modue("myLib")
.factory("myLibFactory",function(){
return{
executeFunction :function(param){}
}
})
然後我如何在頁面上使用此功能? – stephen776 2015-04-07 15:47:00
如果「外部庫」你的意思是純JavaScript/jQuery的,也有一些答案的這個問題。他們都提出了同樣的解決方案,即控制器通過DOM元素的ID曝光,請訪問以下鏈接:
Call Angular Function with Jquery
AngularJS. How to call controller function from outside of controller component
創建一個工廠或服務將不會幫助你有沒有方式注入/暴露一個角度的服務jQuery的功能。
而不是上述解決方案,我會建議嘗試編寫一個事件處理程序。您可以創建一個帶有註冊jQuery自定義事件偵聽器的鏈接函數的angularjs指令。該指令將包含一個嵌套的控制器來處理所需的邏輯。那麼你的jQuery/JavaScript代碼可以簡單地觸發事件
jQuery的客戶活動(以及所需要的任何數據傳遞):
https://learn.jquery.com/events/introduction-to-custom-events/
我認爲然而這一切是不好的做法。我建議你重新考慮你正在努力完成的設計。
在我的場景中,我有一個將JS注入頁面的WPF應用程序。 WPF應用程序期望在頁面上有一個函數作爲'wpfInput(value)'調用,所以我不認爲有什麼方法可以避開不好的練習方面。 – stephen776 2015-04-07 15:25:43
我需要在我的angularJS應用程序的每個頁面上都有我的函數(它反過來由我的WPF應用程序加載) – stephen776 2015-04-07 17:35:09
創建具有相應功能的工廠或服務 – ganders 2015-04-03 19:36:33
您打算如何使該功能在全球範圍內可用? – JackNova 2015-04-03 20:18:10