谷歌地图指示服务路线请求具有以下原型:
route(request:DirectionsRequest, callback:function(DirectionsResult, DirectionsStatus))
我正在类实例方法中调用服务请求,如下所示:
myClass.protype.routeStuff(){
directionsService.route(request, function(response, status){
'''handle the response here'''
});
};
我需要在'''处理响应中访问myClass实例''''。我不是JS专家。我该如何传递它?
更一般地说,给定路由的原型,我如何将其他参数传递给回调函数?
更新1: 我最终使用Chad的答案创建了一个调用的类回调方法:
directionsService.route(request, this.extendRouteToLocationCallback.bind(this));
独立地,我能够通过在回调函数上强制关闭来解决问题,如下所示:
var extrastuff = this;
directionsService.route(request, function (response, status) {
routeCallback(extrastuff, response, status);});
我相信也可以这样做:
directionsService.route(request, function (response, status) {
routeCallback(response, status);}.bind(this));
为了我的直接目的,Chad的方法产生了更好的结构化代码。
更新2:我采用的最终解决方案与此绑定并传递了类似的额外参数:
var request = buildMapRequest(currentEndLocation, null, location);
directionsService.route(request, this.extendRouteToLocationCallback.bind(this, location));
回调看起来像这样:
Route.prototype.extendRouteToLocationCallback = function(location, response, status){...}
答案 0 :(得分:0)
function directionsServiceCallback(response, status){
// this keyword is now a reference to a myClass instance due to
// function binding.
});
myClass.protype.routeStuff(){
directionsService.route(request, directionsServiceCallback.bind(this));
};