Angularjs 工厂和服务的问题

Angularjs 工厂和服务的问题,angularjs,Angularjs,我不知道注射厂是怎么回事,但我正处于最困难的时期 我已经通过这个示例plunk模拟了我试图做的事情,它创建了一个剑道树形图-效果很好 我在script.js中有一个onChange事件,它只是写入控制台。这也起作用了 我的plunk加载以下内容: 1) 初始化app模块,并创建主控制器myCtrl(script.js) 2) 注入widgetLinkingFactoryintmyCtrl 3) 将MyService注入widgetLinkingFactory 在index.html中加载文件的顺

我不知道注射厂是怎么回事,但我正处于最困难的时期

我已经通过这个示例plunk模拟了我试图做的事情,它创建了一个剑道树形图-效果很好

我在script.js中有一个
onChange
事件,它只是写入控制台。这也起作用了

我的plunk加载以下内容:

1) 初始化
app
模块,并创建主控制器
myCtrl
(script.js)

2) 注入
widgetLinkingFactory
int
myCtrl

3) 将
MyService
注入
widgetLinkingFactory

index.html
中加载文件的顺序似乎非常重要

同样,上面的plunk不是真正的应用程序。它展示了我是如何注入工厂和服务的

我的实际代码让我感到悲伤。我很难将工厂/服务注入其他工厂

比如说,

在下面的
函数链接()中调试时,我既看不到“CalculatorService”也看不到“MyService”服务。但是,我可以看到“reportsContext”服务

(函数(){
// ******************************
//工厂:“widgetLinkingFactory”
// ******************************
"严格使用",;
app.factory('widgetLinkingFactory',['reportsContext','MyService',linking]);
函数链接(reportsContext、MyService){
var服务={
链接图表:链接图表
};
回程服务;
函数链接图(parId、小部件、parentWidgetData){
//***在此处调试时***
//我看不到“CalculatorService”和“MyService”
//但是我可以看到“reportsContext”
if(parentWidgetData.parentObj==未定义){
//用户单击了网格/树列表的根节点
}
_.每个(小部件、功能(wid){
if(wid.dataModelOptions.linkedParentWidget){
//刷新这里。。。
}
});
}        
}

})();我想你可能想了解一下工厂/服务,但以下几点可行:

var app = angular.module('rage')
app.factory('hi', [function(){
  var service = {};
  service.sayHi = function(){return 'hi'}
  return service;
}];

app.factory('bye', [function(){
  var service = {};
  service.sayBye = function(){return 'bye'}
  return service;
}];

app.factory('combine', ['hi', 'bye', function(hi, bye){
  var service = {};
  service.sayHi = hi.sayHi;
  service.sayBye = bye.sayBye;
  return service;
}];
在控制器中

app.controller('test', ['combine', function(combine){
  console.log(combine.sayHi());
  console.log(combine.sayBye());
}];

因此,如果您创建了一个plunk或其他东西,我们可以在其中分叉您的代码并测试修复程序,这将非常有用。看看你的服务,他们似乎什么也没有退回。我通常使用“工厂”方法设置所有服务,如下所示

 var app = angular.module('Bret.ApiM', ['ngRoute', 'angularFileUpload']);
app.factory('Bret.Api', ['$http', function ($http: ng.IHttpService) {
    var adminService = new Bret.Api($http);
    return adminService;
}]);

如您所见,我给它起了一个名字,定义了它需要什么服务,然后我创建了一个对象,它就是我的服务,并返回它供其他东西使用。上面的语法是TypeScript,它对Angular的使用非常好,因为Angular团队就是这么使用的。

你的链接功能不是在应用程序之外吗?你明白我发布的答案吗?如果你了解工厂,这是另一个问题,请告诉我。是的,我100%了解,谢谢。我一直在阅读,试图找出我的错误所在。老实说,我没有使用您正在使用的语法,所以我不是100%,但我想我看到了您正在尝试做什么,并将再看一看,什么是reportsContext?我喜欢新的TS语法,并将很快开始使用它。您的回答非常有用,因为我现在正在取得巨大的进步。我相信您的语法更加一致,而且使用范围肯定更广。非常感谢。