Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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
Angularjs 如何与非角度代码共享角度服务中的函数?_Angularjs - Fatal编程技术网

Angularjs 如何与非角度代码共享角度服务中的函数?

Angularjs 如何与非角度代码共享角度服务中的函数?,angularjs,Angularjs,我可能需要调查我为什么在页面中的Angular对象和其他对象之间共享代码。很公平。但与此同时: 我有一些创建ID的代码。它是在一个角度服务: angular.module("Gamma.services").service "idService", () -> @newId = -> id = String.fromCharCode(Math.floor(Math.random() * 25) + 65) + ((@someNumber + Ma

我可能需要调查我为什么在页面中的Angular对象和其他对象之间共享代码。很公平。但与此同时:

我有一些创建ID的代码。它是在一个角度服务:

  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。我用类似的方法更新了我的答案。