1

有谁知道如何将参数传递给您无法更改的回调函数?

所以这是我要实现的代码(这是一种午睡测试方法):

Base.js:

waitForComponentQueryVisible: function (parentNext, parameters) {

    var th = this,
    query = parameters.query,
    scope = th,
    callback = callFunct,
    timeout = 10000;
//The function inside here (returnToParentTester(parentNext, parameters)) is from Base.js 
    callFunct = function () {
        scope.returnToParentTester(parentNext);
    }
    this.test.waitForComponentQueryVisible(query, callback, scope, timeout);
},

这里的问题有两个部分: 1. 我无法获得恰到好处的范围,因此我可以使用在 Base.js 中找到的 returnToParentTester 方法 2. 我想将 parentNext 传递给该方法,但在将其定义为时不能这样做回调

这是我需要作为回调运行的方法:

Base.js:

returnToParentTester: function (parentNext, parameters) {
    debugger;
    if (parentNext) {
        parentNext.call(undefined, parameters);
    } else {
        this.test.fail('--Developer Error-- undefined parentNext ' +
                       'variable. All the chains are going to fail');
    }
},
4

1 回答 1

0

我无法获得恰到好处的范围,因此我可以使用 Base.js 中的 returnToParentTester 方法

使用call方法改变范围:

Base.returnToParentTester.call(myScope)

我想将 parentNext 传递给该方法,但在将其定义为回调时不能这样做

使用匿名函数作为回调并在其范围内传递参数:

$("body").click(function(e){foo(e.target,bar,baz)})

然后让它完成工作:

function foo(myScope, next1, param1)
 {
 Base.returnToParentTester.call(myScope, next1, param1)
 }

参考

于 2014-08-26T23:54:40.867 回答