我想通过将现有代码转换为ES6(如本视频中所推荐的)开始准备Angular 2 .
但是,我立刻感到难过,或者可能不确定如何继续.在视频中,它们显示了服务的转换.在我的代码中,我正在尝试转换工厂,这在尝试转换为ES6时类似但实际上完全不同.该服务很容易遵循类实例化方法,但工厂需要返回注入的对象.
我的代码开头是这样的:
melange.factory('SomeService', ['$resource', function ($resource) {
  var someResource = $resource('/api/endpoint');
  someResource.customQuery = function() {
    // ... do some custom stuff
  };
  return someResource;
}]);
我的第一次失败尝试 - 所以我立即开始转换到ES6并想出了这个:
// notice I changed this to service instead of factory
melange.service('SomeService', ['$resource', SomeService]);
class SomeService {
  constructor ($resource) {
    var someResource = $resource('/api/endpoint');
    someResource.customQuery = function() {
      // ... do some custom stuff
    };
    return someResource;
  }
}
但那不对......构造函数正在返回一个资源.
也许成功尝试 - 所以它真的是资源(或者真的是一个Route对象),这就是我想要'class-ify'的东西.但由于Resource对象已经有一个特定的接口接口,我需要我的类扩展基础Resource对象.但这是通过调用$ resource工厂函数动态生成的.所以我想出了这个可能正确的代码:
melange.service('SomeService', ['$resource', …