使用 angular 和 requirejs

Using angular with requirejs

我有一个使用 require

的普通 JS class
//a.js
(function() {
    define(function() {
        var vaz = function(dependency){
            var myFact = function(){
              // doing a new Dependency();
             }
            return myFact;
        };

        return ['dependency',vaz];
    });

}());

现在我正在创建一个 angular 模块:

    define([<a.js>], function(A){
      var mod = angular.module('myMod');
      mod.factory("myFact", A);
      mod.run([function(){
        new A() // gives an error 'A is not a constructor' 
        new A[1]() //gives an error 'dependency is not a constructor' 
      }])
    })

这给了我一个错误,说 a 不是构造函数,因为它是遗留代码,所以我不允许修改 a.js。 请帮忙。

如果依赖项的原型正确设置了 constructor 属性,这应该有效:

define([<a.js>], function(A){
      var mod = angular.module('myMod');
      mod.factory("myFact", A);
       mod.run(['$injector', function[function($injector){
        var dep = $injector.get("dependency");
        var new A[1](dep.constructor);
      }])
    })

但如果不是这种情况,您将无法在不修改遗留代码的情况下做到这一点。 (也许你可以在 dependency 的原型上设置构造函数 属性 而没有太多副作用)