如何将参数传递给回调并且不丢失绑定?
How to pass argument to callback and don't lose bind?
我有以下代码:
$.getJSON('getAllTerminals.json', renderTerminalsOnMapAndFitBounds.bind({index:globalRequestCounter++, navigateToTypedText:true}))
...
function renderTerminalsOnMapAndFitBounds(data, updateSelectedTerminals) {
renderTerminalsOnMap.call(this,data);
fitBounds();
if(this.navigateToTypedText === true){
navigateMapToTypedAdress();
}
if (updateSelectedTerminals) {
$.getJSON('getSelectedTerminals', {}, function (json) {
window.MARC.addTerminalPage.terminalsSelected = json;
update();
initPage();
});
}
}
你能告诉我如何让一切都像现在一样工作,但 renderTerminalsOnMapAndFitBounds
被传递 updateSelectedTerminals
为真吗?
不,您不能使用 bind
来部分应用非初始参数(并且没有 flip
)。只需使用一个函数表达式:
$.getJSON('getAllTerminals.json', function(data) {
renderTerminalsOnMapAndFitBounds.call({
index:globalRequestCounter++,
navigateToTypedText:true
}, data, true);
});
如果必须使用绑定,请更改 renderTerminalsOnMapAndFitBounds
的参数顺序,或者使其接受 updateSelectedTerminals
参数作为 this
对象的 属性 .
我有以下代码:
$.getJSON('getAllTerminals.json', renderTerminalsOnMapAndFitBounds.bind({index:globalRequestCounter++, navigateToTypedText:true}))
...
function renderTerminalsOnMapAndFitBounds(data, updateSelectedTerminals) {
renderTerminalsOnMap.call(this,data);
fitBounds();
if(this.navigateToTypedText === true){
navigateMapToTypedAdress();
}
if (updateSelectedTerminals) {
$.getJSON('getSelectedTerminals', {}, function (json) {
window.MARC.addTerminalPage.terminalsSelected = json;
update();
initPage();
});
}
}
你能告诉我如何让一切都像现在一样工作,但 renderTerminalsOnMapAndFitBounds
被传递 updateSelectedTerminals
为真吗?
不,您不能使用 bind
来部分应用非初始参数(并且没有 flip
)。只需使用一个函数表达式:
$.getJSON('getAllTerminals.json', function(data) {
renderTerminalsOnMapAndFitBounds.call({
index:globalRequestCounter++,
navigateToTypedText:true
}, data, true);
});
如果必须使用绑定,请更改 renderTerminalsOnMapAndFitBounds
的参数顺序,或者使其接受 updateSelectedTerminals
参数作为 this
对象的 属性 .