TypeError:Object#<object>没有方法</object>

时间:2014-07-07 12:11:19

标签: sencha-touch ibm-mobilefirst worklight-adapters

我正在使用Worklight Ibm开发混合应用程序,使用sencha touh进行UI。

在我的控制器中我正在调用这样的HTTPAdapter:

var invocationData = {
    adapter : 'UserHttpAdapter',
    procedure : 'getPersonneMorale',
    parameters : []
};

WL.Client.invokeProcedure(invocationData, {
    onSuccess : function() {
        console.log('Signed in.');
        var loginView = this.getLoginView();
        mainMenuView = this.getMainMenuView();
        loginView.setMasked(false);

        Ext.Viewport.animateActiveItem(mainMenuView, this
                .getSlideLeftTransition());
    },
    onFailure : function(){
        console.log('failure');
    },
});

但是我收到了这个错误:

07-07 11:43:45.812: E/NONE(31172): [http://<domain>:<port>/WLErsalMobileTest/apps/services/api/ErsalMobileTest/android/query] exception. TypeError: Object #<Object> has no method 'getLoginView'
07-07 11:43:45.832: D/CordovaLog(31172): file:///android_asset/www/default/worklight/worklight.js: Line 3333 : Uncaught TypeError: Object #<Object> has no method 'getLoginView'
07-07 11:43:45.832: E/Web Console(31172): Uncaught TypeError: Object #<Object> has no method 'getLoginView':3333

当我执行代码时:

signInSuccess : function() {
    console.log('Signed in.');
    var loginView = this.getLoginView();
    mainMenuView = this.getMainMenuView();
    loginView.setMasked(false);

    Ext.Viewport.animateActiveItem(mainMenuView, this.getSlideLeftTransition());
},

没有调用它适用的适配器。

你能帮帮我吗?

谢谢

1 个答案:

答案 0 :(得分:0)

尝试执行以下操作:

WL.Client.invokeProcedure.apply(this, [invocationData, callbackFunction])

其中callbackFunction是您上面的回调。我认为问题是回调上下文中没有指定变量'this',因此通过使用apply,您指定'this'应该是您指定的值。尝试一下,看看它是否有效,虽然我不确定它是否能解决你的问题,因为我不知道它是否会在回调函数中使用给定的'this'。