在我的控制器中,我调用一个需要递归调用自身的工厂函数。代码工作时只是简单的javascript函数没有在工厂中定义,但我试图将它们隔离得更好。
这是控制器中代码片段的样子:
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!
答案 0 :(得分:6)
您可以拨打this.getTaxonomy()
作为@elclanrs提及或更改您的工厂,以便您可以从内部调用它:
myApp.factory('AppFactory', ['$http', '$q', function($http, $q, TaxoFactory) {
var AppFactory = {
getTaxonomy: function(group, termSet) {
... lots of code ....
if (termSet.length > 0) { AppFactory.getTaxonomy(group, childTermSet) }
}
}
return AppFactory;
}]);