Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在AngularJS中公开公共功能_Javascript_Angularjs - Fatal编程技术网

Javascript 如何在AngularJS中公开公共功能

Javascript 如何在AngularJS中公开公共功能,javascript,angularjs,Javascript,Angularjs,我正在用AngularJS编写一个应用程序。我需要公开一个将由外部库调用的函数 我需要我的第三方图书馆电话 executeFunction(param) 让我的angular应用程序做出相应的响应 我的第一个想法是创建一个指令,我可以将其应用到一个页面,该指令会告诉该页面侦听要调用的事件(函数),但我似乎不知道该怎么做。您可以创建一个工厂或服务,或者更可靠的解决方案是使ab模块完整 angular.modue("myLib") .factory("myLibFactory",function(

我正在用AngularJS编写一个应用程序。我需要公开一个将由外部库调用的函数

我需要我的第三方图书馆电话

executeFunction(param)
让我的angular应用程序做出相应的响应


我的第一个想法是创建一个指令,我可以将其应用到一个页面,该指令会告诉该页面侦听要调用的事件(函数),但我似乎不知道该怎么做。

您可以创建一个
工厂
服务
,或者更可靠的解决方案是使ab模块完整

angular.modue("myLib")
.factory("myLibFactory",function(){
return{
executeFunction :function(param){}
}
})
如果“库外”是指纯javascript/jquery,那么这个问题有很多答案。他们都提出了相同的解决方案,即通过DOM元素id公开控制器,请参见以下链接:

创建工厂或服务不会有帮助,因为您无法向jquery函数注入/公开角度服务

与上述解决方案不同,我建议尝试编写一个事件处理程序。您可以创建一个带有链接函数的angularjs指令,该函数注册jquery自定义事件侦听器。该指令将包含用于处理所需逻辑的嵌套控制器。然后,jquery/javascript代码可以简单地触发事件(传递所需的任何数据)

jQuery客户事件:


然而,我认为所有这些都是不好的做法。我建议您重新考虑您试图实现的功能的设计。

创建一个具有适当功能的工厂或服务,您是否计划使该功能在全球范围内可用?在我的场景中,我有一个WPF应用程序将JS注入页面。WPF应用程序希望页面上有一个函数可以调用,例如
wpfInput(value)
,因此我认为没有任何方法可以绕过坏的实践方面。我需要在angularJS应用程序的每个页面上都有我的函数(它反过来由我的WPF应用程序加载),然后如何使该函数在页面上可用?