现在,我希望创建一个可以随时实例化但仍可以使用角度服务的对象:

以以下对象为例:

var myObject = function (variableOne, variableTwo) {
    this.variableOne = variableOne;
    this.variableTwo = variableTwo
};

myObject.prototype.useAngularService = function () {
    return $sessionStorage.user;
};


当然,该object不能使用$sessionStorage,但是我的问题是,您将如何创建一个可以利用角度服务的对象?

我之所以要使用此方法而不是服务或工厂,基本上是因为我想要该对象的不同实例,并且我不寻找单例解决方案。

最佳答案

您可以从factory返回您的类型。然后工厂将提供Angular服务,您将在它们附近关闭。

yourModule.factory('yourName', function($sessionStorage) {
    var myObject = function (variableOne, variableTwo) {
        this.variableOne = variableOne;
        this.variableTwo = variableTwo
    };

    myObject.prototype.useAngularService = function () {
        return $sessionStorage.user;
    };

    return myObject;
});


您也可以使用$injector.get(...)请求任何已注册的服务,但这会使代码变脆。

09-25 18:13