角度服务连接不起作用

时间:2013-11-06 20:27:43

标签: angularjs dependency-injection angularjs-service

我已根据其他服务编写了一项服务。但初始化不起作用。

You can find a plunker as showcase

应该接近工作...任何tipps? 提前谢谢!

编辑:现在修复了plunker并可以作为参考。

2 个答案:

答案 0 :(得分:1)

您需要将testServiceMockConfigtestServicefactory更改为service,例如:

.service('testServiceMockConfig', function ()

或将它们保存为工厂并在其底部添加return.this;或者像这样重新构建它们(推荐):

angular.module('testServiceMockConfig', [])
  .factory('testServiceMockConfig', function() {
    console.log("setup cqrs mock config.");

    return {
      doLoadItems: function(callback) {
        console.log("mock loading data");
        if (!this.configuredLoadItems) {
          throw Error("The mock is not configured to loadItems().");
        }
        callback(this.loadItemsError, this.loadItemsSuccess);
      },
      whenLoadItems: function(success, error) {
        this.configuredLoadItems = true;
        this.loadItemsSuccess = success;
        this.loadItemsError = error;
      }
    };
  });

我还假设loadItems中的testService应该致电:

testServiceMockConfig.doLoadItems(callback);

而不是:

testService.doLoadItems(callback);

答案 1 :(得分:1)

从我的例子中可以看出,

  • 您没有正确定义用于factory.的{​​{1}} this密钥
  • {li} in service替换为testService.doLoadItems(callback);

服务 - 工厂 - 提供商之间的区别以及您可以在此简单演示中找到的定义:

Fiddle

修复示例:

testServiceMockConfig.doLoadItems(callback);

演示 Plunker