Angularjs 向工厂提供角度服务

Angularjs 向工厂提供角度服务,angularjs,Angularjs,我有一个AngularJS工厂,我正在向其中注入服务 当我在Chrome中调试时,我可以看到服务被注入(在return service;行),但在我的一个函数中无法访问它 请参阅函数updateWidget,其中我尝试调用reportsContext.buildAggrFuncFromKriGrid (函数(){ "严格使用",; 角度.module('app').factory('widgetLinkingFactory',['$q','reportsContext',linking]);

我有一个AngularJS工厂,我正在向其中注入服务

当我在Chrome中调试时,我可以看到服务被注入(在
return service;
行),但在我的一个函数中无法访问它

请参阅函数
updateWidget
,其中我尝试调用
reportsContext.buildAggrFuncFromKriGrid

(函数(){
"严格使用",;
角度.module('app').factory('widgetLinkingFactory',['$q','reportsContext',linking]);
函数链接($q,reportsContext){
var服务={
链接图表:链接图表
};
回程服务;
函数链接图(parId、小部件、parentWidgetData){
_.每个(小部件、功能(wid){
if(wid.dataModelOptions.linkedParentWidget){
updateWidget(wid,parentWidgetData);
}
});
}
}
函数updateWidget(小部件,parWidData){
//在子窗口小部件上拉取风险度量
var rm=widget.dataModelOptions.riskmeases;
//*******为什么“reportsContext”服务在此未定义?????
var aggrFuncArray=reportsContext.buildAggrFuncFromKriGrid(rm);
var cubeVectors=aggrFuncArray[0];
var aggrFunc=aggrFuncArray[1];
返回true;
}

})();
您需要将
updateWidget
函数移动到
linkCharts
中,以便
reportsContext
在那里可用:

(function() {
    'use strict';
    angular.module('app').factory('widgetLinkingFactory', ['$q', 'reportsContext', linking]);

    function linking($q, reportsContext) {

        var service = {
            linkCharts: linkCharts
        };

        return service;

        function linkCharts(parId, widgets, parentWidgetData) {

            _.each(widgets, function(wid) {
                if (wid.dataModelOptions.linkedParentWidget) {
                    updateWidget(wid, parentWidgetData);
                }
            });
        }

        function updateWidget(widget, parWidData) {

            // PULL RISK MEASURES ON CHILD WIDGET 
            var rm = widget.dataModelOptions.riskMeasures;

            var aggrFuncArray = reportsContext.buildAggrFuncFromKriGrid(rm);

            var cubeVectors = aggrFuncArray[0];
            var aggrFunc = aggrFuncArray[1];

            return true;
        }
    }

})();

是的,我又犯了一个愚蠢的错误。我现在可以完全访问我的
reportsContext
服务;但是,我看不到
$q
。有什么问题吗?它应该是可用的,检查你的代码,可能是一些特定的设置干扰。难以置信的是,没有。$q不可用。我还尝试了$http。还是没什么。很奇怪。根据这篇文章,可能提供商根本不可用-