У меня есть всплывающее окно подтверждения, которое спрашивает да или нет, это код:

Confirm({
    Title: 'Warning',
    Message: 'Are you sure?',
    Buttons: [{
        text: 'Yes',
        callback: function(){
            RRSubmitRemoveReportRequest($(this));
        },
        highlighted: true
    }, {
        text: 'No)',
        callback: null,
        type: 'no'
    }]
});

Если при отправке параметра $ (this) я должен использовать анонимную функцию, в противном случае она вызывает функцию сразу, кто-нибудь может объяснить мне это, пожалуйста? Спасибо

0
rgx71 29 Янв 2013 в 20:30

2 ответа

Лучший ответ

Свойство callback должно быть установлено в function.

Если вы это сделаете:

callback: RRSubmitRemoveReportRequest($(this))

Вы устанавливаете callback на возвращаемое значение функции RRSubmitRemoveReportRequest.

Вам нужно передать ему функцию. RRSubmitRemoveReportRequest - это функция, RRSubmitRemoveReportRequest($(this)) - вызов функции, поэтому она запускается и используется ее возвращаемое значение.

Когда вы это сделаете:

callback: function(){
    RRSubmitRemoveReportRequest($(this));
}

Вы передаете функцию, которая при вызове будет правильно вызывать RRSubmitRemoveReportRequest.

2
Rocket Hazmat 29 Янв 2013 в 16:35

Это легко понять на примере:

function foo(i){
    return i*10;
}

var x = foo(1); // execute foo with 1 parameter;

var x = function(){ // creates a callback to the foo function.
    foo(1);
};

var x = foo; // pointer to foo function and then:
x(1);

В итоге, обратный вызов должен быть функцией , которая будет вызываться где-то в будущем, а не значением функции.

4
gdoron is supporting Monica 29 Янв 2013 в 16:40