AngularJS(1.5)依赖注入模型类(typescript)

时间:2016-06-23 20:05:07

标签: angularjs dependency-injection typescript model

我正在尝试使用typescript来构建angularjs(1.5)应用程序。

我想制作一个调用模型的工厂(可以带参数)。

如果我在纯JS中做这件事,我可以做以下事情

angular.module('test', [])
    .factory('Talker', [$q, function($q){
      return Talker()

      function Talker(name) {
        this.name = name || 'Bobuel Johnson'; 
      }
      Talker.prototype.deferredHello = function(){
        $q.when('Hi, I\'m ' + this.name);
      }
    }])

现在我想在打字稿中这样做,这样我可以使用Talker类,但我希望能够将$ q注入到模型类中。

拜托,你能帮我弄清楚如何将这个设置作为打字稿的等价物吗?

1 个答案:

答案 0 :(得分:2)

如果只是为了准备angular2,我建议使用服务配方而不是工厂。对该js代码的TypeScript重写看起来像这样。

SELECT foo('test_idx on test; drop table foo; --');

您可以找到js here的翻译。

如果绝对需要工厂,你应该能够这样做:

create or replace function foo(p_tablename text) returns void language plpgsql as $$ 
begin 
  execute 'create unique index ' || quote_ident(p_tablename || '_row_id_key') || ' on ' || quote_ident(p_tablename) || '(row_id)';
end; $$;

您可以查看生成的javascript here

如果您需要创建 Talker 的多个实例,您可以这样做。

class Talker {
  public static $inject = ['$q']; // configure angular di
  private name: string = 'Some talker';  

  constructor(private $q) {}

  public deferredHello() {
    this.$q.when('Hi, I\'m ' + this.name);
  }
}

angular.module('test').service('Talker', Talker);

这个例子是here