Javascript 在同一工厂内调用工厂函数
在我的控制器中,我调用一个需要递归调用自身的工厂函数。这些代码在它们只是工厂中没有定义的简单javascript函数时就可以工作了,但我正在尝试更好地隔离它们 这是控制器中的代码片段的外观:Javascript 在同一工厂内调用工厂函数,javascript,angularjs,Javascript,Angularjs,在我的控制器中,我调用一个需要递归调用自身的工厂函数。这些代码在它们只是工厂中没有定义的简单javascript函数时就可以工作了,但我正在尝试更好地隔离它们 这是控制器中的代码片段的外观: myApp.controller('VisionCtrl', ['$scope', 'AppFactory', function ($scope, AppFactory,) { var promiseTaxo; promiseTaxo = AppFactory.getTaxonomy("vi
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 您可以调用@elclans提到的
this.getTaxonomy()
,或者稍微更改一下您的工厂,以便从内部调用它:
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;
}]);
未定义
getTaxonomy
,请尝试this.getTaxonomy
。或者先定义对象,然后使用obj.getTaxonomy
并在末尾使用returnobj
。或者给你的函数一个用于递归的名称。定义包含所有函数的内部对象完成了这项工作-谢谢,注意这个.getTaxonomy()不起作用-未定义,我不明白为什么,可能与注入器的工作方式有关。