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

时间:2015-01-07 20:01:27

标签: angularjs angular-services

我有两个功能,我想分享多个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控制器共享这些类型的函数的最佳方法是什么?

1 个答案:

答案 0 :(得分:6)

拥有此类全局常用功能的最佳位置是“运行块”。它们是Angular中最接近Main方法的东西。

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

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