Функция обратного вызова в aurelia js

Я новичок в Aurelia JS. Здесь мне нужно сделать обратный звонок в Aurelia JS. Вот код, который я пробовал,file.js

this.commonFunctions.get_alrdyShrdUser(this.alrdyshardAry,function(err,result){
        if(!err){
            console.log("err,result",err,result);
            this.sharedAlrdy =  result;
        }else{

        }
    });

commonFunctions

get_alrdyShrdUser(docids,callback){
     this.httpValueConverter.call_http('sharing/users/list','POST',docids,'test')
        .then(data => {
        if(data.meta && data.meta.statusCode == 200) {
        return callback(null,data.sharedUsers)
        }
    });
}

Здесь все работает нормально, функция обратного вызова также возвращает значение, но я не могу присвоить значение переменной aurelia (this.sharedAlrdy). Она выдает ошибку, Невозможно установить свойство sharedAlrdy из undefined. Это какой-то другой способ достижения?

1 ответ

Решение

Это не имеет ничего общего с Аурелией. У вас просто типичная проблема с JavaScript this,

Поскольку вы используете Aurelia, я предполагаю, что это код ES6, и у вас есть поддержка функции стрелки. Используйте функцию стрелки в функциях обратного вызова, и у вас не будет проблем с захватом this:

this.commonFunctions.get_alrdyShrdUser(this.alrdyshardAry, (err, result) => {
    if (!err) {
        console.log("err, result", err, result);
        this.sharedAlrdy = result;
    } else {

    }
});

Для более подробной информации о функциях стрелок и thisПосмотрите на MDN.

Другие вопросы по тегам