在AngularJS中,如何让一个工厂函数引用另一个工厂函数?

In AngularJS, how do I get one factory function to refer to another?

本文关键字:函数 工厂 一个 引用 另一个 AngularJS      更新时间:2023-09-26

例如,在下面的代码中,我想让func2调用func1。

App.factory("MyLib", function() {
  return {
    func1: function() {
      console.log("func1");
    },
    func2: function() {
      func1();
    }
  }
});

我该怎么做?

最安全的方法是使用揭示模块模式:

App.factory("MyLib", function() {
    var func1 = function() {
        console.log("func1");
    };
    var func2 = function() {
        func1();
    };
    return {
        func1: func1,
        func2: func2
    };
});

我通常将它赋给一个与factory相同的变量名,这样更容易阅读,并且在下面的示例中有嵌套函数时重用它很有用。

App.factory("MyLib", function() {
    var MyLib = {
        func1: function() {
            console.log("func1");
        },
        func2: function() {
            MyLib.func1();
            angular.forEach(["1","2"], function(value, key) {
                //easier to read and understand
                MyLib.func1();
            },[]);
        }
    }
    return MyLib;
});