2015-06-12 3 views
0

У меня есть диалог filepicker.io, но при успешном обратном вызове я, кажется, теряю свой «этот» контекст.jQuery «это» в обратном вызове

Так что мой код, как этот

var fileProcess ={ 

saveFileInfo: function() { 
.....process info here 
}, 

selectFile: function() { 
     filepicker.pick({ mimetype: 'image/*' }, function (Blob) { 
      this.saveFileInfo(); 
     }); 

    } 

} 

Так есть что-то вроде «контекст: это» как я могу сделать в вызов AJAX?

ответ

0

Попробуйте создать новую переменную с именем self или me, установленное на текущее значение this ВЗАИМОДЕЙСТВИЕ вашего обратного вызова. Затем вы используете закрытие, чтобы вы могли получить доступ к this с вашего обратного вызова через me или self.

Как:

this.mesg = "Hello"; 
var self = this; 
function handler() { 
    alert(self.mesg); 
} 

позже после переключения контекста ...

handler(); // Will alert 'Hello' 

EDIT: Ах орехи ... Просто понял, что не будет работать ... Попробуйте:

function handler() { 
    alert(this.msg); 
} 
var newHandler = handler.bind(this); 

Позже ...

newHandler(); 

Function.prototype.bind() берет объект и возвращает функцию. Всякий раз, когда вызывается возвращаемая функция, объект, переданный в bind(), используется как this.

+0

Можете ли вы продемонстрировать с помощью некоторого псевдокода, пожалуйста, – braindice

+0

@braindice Done. – alexbuzzbee

+0

@braindice Ум, привет? Вам все еще нужна помощь? – alexbuzzbee

Смежные вопросы