如何在AngularJS中共享原型函数?

如何在AngularJS中共享原型函数?,angularjs,angular-services,Angularjs,Angular Services,我想在多个AngularJS控制器之间共享两个函数,但我不确定如何为原型函数实现这一点 以前,功能是在控制器中定义的: Array.prototype.contains = function(needle) { ... } 这允许使用contains方法链接任何数组。但是,当放置在工厂中时,这不起作用,因为服务之外的任何数组都未定义contains (function() { 'use strict'; angular .module('app') .factory('

我想在多个AngularJS控制器之间共享两个函数,但我不确定如何为原型函数实现这一点

以前,功能是在控制器中定义的:

Array.prototype.contains = function(needle) {

...

}
这允许使用
contains
方法链接任何数组。但是,当放置在工厂中时,这不起作用,因为服务之外的任何数组都未定义
contains

(function() {

'use strict';

angular
    .module('app')
    .factory('FunctionsFactory', FunctionsFactory);

function FunctionsFactory() {

    return {
        contains: contains,
        exactlyContains: exactlyContains
    };
    ...

跨多个AngularJS控制器共享此类函数的最佳方式是什么?

拥有此类全局通用函数的最佳位置是运行块。它们在角度上与主要方法最接近

    angular.module('myApp',  [])
    .run(function(){
        Array.prototype.contains = function(){
             console.log('array contains');
        };    
    });

运行块在创建注入器后执行,用于启动应用程序。

也许我不理解您的问题,但对于共享功能,我认为最好的方法是将此功能放入单独的服务中,然后将此服务注入多个控制器。