如何将参数传递给回调并且不会丢失绑定?

时间:2015-06-17 22:26:08

标签: javascript jquery callback argument-passing

我有以下代码:

$.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为真?

1 个答案:

答案 0 :(得分:2)

不,您不能使用bind部分应用非初始参数(并且没有flip)。只需使用函数表达式:

$.getJSON('getAllTerminals.json', function(data) {
    renderTerminalsOnMapAndFitBounds.call({
        index:globalRequestCounter++,
        navigateToTypedText:true
    }, data, true);
});

如果必须使用bind,请更改renderTerminalsOnMapAndFitBounds的参数顺序,或使其接受updateSelectedTerminals参数作为this对象的属性。