Angularjs 如何与非角度代码共享角度服务中的函数?
我可能需要调查我为什么在页面中的Angular对象和其他对象之间共享代码。很公平。但与此同时: 我有一些创建ID的代码。它是在一个角度服务:Angularjs 如何与非角度代码共享角度服务中的函数?,angularjs,Angularjs,我可能需要调查我为什么在页面中的Angular对象和其他对象之间共享代码。很公平。但与此同时: 我有一些创建ID的代码。它是在一个角度服务: angular.module("Gamma.services").service "idService", () -> @newId = -> id = String.fromCharCode(Math.floor(Math.random() * 25) + 65) + ((@someNumber + Ma
angular.module("Gamma.services").service "idService", () ->
@newId = ->
id = String.fromCharCode(Math.floor(Math.random() * 25) + 65) +
((@someNumber + Math.floor(Math.random() * 1e15) +
new Date().getMilliseconds()).toString(36)).toUpperCase()
好的,这很好,但我需要在我的应用程序中与一些非角度代码共享这段代码。我已经找到了一个解决方案(将此代码移到window对象之外的函数中),但我认为更正确的解决方案可能是传递一个指向Angular服务的函数指针
如何将角度服务传递给非角度代码 根据@jcollum的评论/提示更新
angular.module('myApp', []).
factory('myService', [function() {
return function() {
alert('hello from the service')
};
}]);
angular.element(document).ready(function(){
angular.bootstrap(document, ['myApp']);
var doc = angular.element(document),
injector = doc.injector(),
myService = injector.get('myService');
myService(); // alerts
});
是的,我尝试了本地范围的$service调用,没有bueno:
对象#没有方法“$service”
。考虑到谷歌群发帖子的年代,我怀疑它已经过时了。嘿,我不想窃取你的业力,所以看看并更新你的答案。通过注射器获得服务是可行的。谢谢@jcollum。我用类似的方法更新了我的答案。