我正在尝试使用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注入到模型类中。
拜托,你能帮我弄清楚如何将这个设置作为打字稿的等价物吗?
答案 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。