在我的控制器中,我调用一个需要递归调用自身的工厂函数。代码工作时,他们只是简单的JavaScript函数没有在工厂内定义,但我试图隔离他们好一点。Angular在同一工厂调用工厂函数
这是一个代码片段看起来像控制器:
myApp.controller('VisionCtrl', ['$scope', 'AppFactory', function ($scope, AppFactory,) {
var promiseTaxo;
promiseTaxo = AppFactory.getTaxonomy("vision3", "Vision Type");
}])
,工厂模块:
myApp.factory('AppFactory', ['$http', '$q', function($http, $q, TaxoFactory) {
return {
getTaxonomy: function(group, termSet) {
... lots of code ....
if (termSet.length > 0) { getTaxonomy(group, childTermSet) }
}
}
}])
这是超级简单,但这个想法是,在getTaxonomy函数,如果我找到了子节点,我递归地调用我自己。在处理处理和承诺的异步性质的地方,还有很多事情要做,但是当我将这些代码放在工厂之外时,它就可以正常工作。
我只是不知道如何在getTaxonomy中调用getTaxonomy!
'getTaxonomy'没有定义,尝试'this.getTaxonomy'。或者先定义对象,然后在末尾使用'obj.getTaxonomy'和'return obj'。或者给你的函数一个名字用于递归。 – elclanrs