angularjs - 如何在 AngularJS 中共享原型(prototype)函数?

标签 angularjs angular-services

我有两个函数想在多个 AngularJS Controller 之间共享,但我不确定如何为原型(prototype)函数执行此操作。

以前,函数是在 Controller 中定义的:

Array.prototype.contains = function(needle) {

...

}

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

(function() {

'use strict';

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

function FunctionsFactory() {

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

在多个 AngularJS Controller 之间共享这些类型的函数的最佳方式是什么?

最佳答案

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

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

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

关于angularjs - 如何在 AngularJS 中共享原型(prototype)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27827681/

相关文章:

javascript - ng-repeat 隐藏一个属性,如果它等于 DateTime.MinValue

javascript - 为初始编译后创建的元素创建 2 路绑定(bind)

angularjs - Jasmine spyOn函数和返回的对象

javascript - Angular 4/5 - 使用动态配置实例化服务

javascript - AngularJS 服务问题

javascript - 在 Angular.js 中绑定(bind)服务变量

unit-testing - Angularjs:angular-phonecat 教程应用程序第一次单元测试失败

javascript - 嵌套的 JSON 不显示在 ng-repeat 中

javascript - angularjs:$http 未在服务中定义