【问题标题】:Callback function in aurelia jsaurelia js中的回调函数
【发布时间】:2016-11-25 01:52:23
【问题描述】:

我是 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{

        }
    });

常用函数

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 ' 的未定义。还有其他方法可以实现吗?

【问题讨论】:

    标签: aurelia


    【解决方案1】:

    这与奥蕾莉亚无关。您只是遇到了 this 的典型 JavaScript 问题。

    由于您使用的是 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

    【讨论】:

    • 这个怎么改成es6甲酸盐$('.fb_folder_container').on('scroll', e => { if($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight) { this.loadMoreData(); } });
    • 由于您使用的是箭头函数,this 指的是父作用域而不是元素。在这种情况下,先为元素创建一个变量let $element = $('.fb_folder_container');,然后在代码中使用它:$element.on('scroll', e => { if ($element.scrollTop() + $element.innerHeight() >= $element.scrollHeight) { this.loadMoreData(); }); - 类似的,您可以在函数中执行console.log() 来检查值。顺便说一句,我通常将该功能封装到组件中 - infinite-scroll,因此它可以在多个页面上重复使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2018-07-15
    相关资源
    最近更新 更多