Angular在同一工厂内调用工厂功能

时间:2014-06-04 23:00:57

标签: javascript angularjs

在我的控制器中,我调用一个需要递归调用自身的工厂函数。代码工作时只是简单的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!

1 个答案:

答案 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;
}]);