我试图让SignalR和Typescript一起工作。
我收到了以下文件:
/// <reference path="../../vendor/jquery/jquery.d.ts" />
interface SignalR {
roleHub: IRoleHub;
}
interface IRoleHub {
server: IRoleHubServer;
client: IRoleHubClient;
}
interface IRoleHubServer {
getUserRoles();
}
interface IRoleHubClient {
populateUserRoles(names: string[]) : IRoleHubClient;
}
以下类实现IRoleHub:
module Portal.App {
export class Controller implements IRoleHub {
role: Portal.App.Model.IRole;
server: IRoleHubServer;
client: IRoleHubClient;
constructor(role: Portal.App.Model.IRole) {
this.role = role;
this.server = $.connection.roleHub.server;
this.client = $.connection.roleHub.client;
}
getUserRoles() {
this.server.getUserRoles();
}
populateUserRoles(roles: string[]) {
console.log('populated');
}
}
}
我在另一个文件中调用了getUserRoles,并且正在调用我的服务器端函数,但是我很难实现populateUserRoles客户端回调。
在Javascript中,我会做到:
connection.client.populateUserRoles = function (roles) {
[...]
}
但是我上面的代码会生成以下输出,这是不正确的:
Controller.prototype.populateUserRoles = function (roles) {
console.log('populated');
};
我将非常感谢您实施此功能的任何帮助。
答案 0 :(得分:1)
以下是一种应该有效的方法:
constructor(role: Portal.App.Model.IRole) {
this.role = role;
this.server = $.connection.roleHub.server;
this.client = $.connection.roleHub.client;
this.client.populateUserRoles = (roles)=> this.roles(roles);
}