在作为回调的自定义窗口小部件中调用函数

时间:2014-09-25 21:11:21

标签: javascript dojo

我正在尝试从函数SetLoginInfo中调用窗口小部件中的函数SetLoginButtonLabel - SetLoginInfo是从窗口小部件LogInDB回调。当我尝试使用this.SetLoginButtonLabel调用它时,我得到错误SetLoginButtonLabel未定义。我也在尝试如下所示,但这也不起作用。我想从SetLoginInfo中调用几个不同的函数 - 我如何使用hitch或其他方法来使其工作?

由于

---小工具登录

...
postCreate: function() {
 var SetLab = lang.hitch(this, "SetLoginButtonLabel");

}

Login: function() //call the database
{

LoginDB.Login("http://xxx/John Smith", this.SetLoginINfo)
},


SetLoginInfo: function(LoginData) //call back from LoginDB
{
//I've tried:
this.SetLogingButtonLabel("status"); //get an undefined error

//and 
SetLab("Logout");//this just seems to get lost

},

SetLoginButtonLabel: function(status)
{
//
}

.......

--- Widget LoginDB

define(['dojo/store/Memory', 'dojo/_base/xhr', "dojo/data/ObjectStore", 'dojo/_base/json'],
//functions to get data and fill data stores
function (Memory, xhr, ObjectStore) {
    var TicketStore;
    return {
        //login
        Login: function (url, callback) {
            xhr.get({//send data
                url: url,
                handleAs: "json",
                load: function (result) {
                    var LoginData = result;
                    callback(LoginData);

                },
                error: function (err) { }

            });
        }



    }

});

1 个答案:

答案 0 :(得分:0)

这使它起作用:

LoginDB.Login(s, lang.hitch(this, this.SetLoginInfo));

我在SetLoginInfo中的所有调用都把它放在前面:

this.SetLoginButtonLabel("Logged In");