2

現在、実行時にapp.jsにロードしているストアがあります。

stores: ['Neighbors']

そのautoLoadプロパティはtrueに設定されています。

localStorageに情報が見つからない場合に読み込まれるログインシステムを追加しました。

//show login if user credentials are unknown
var username = window.localStorage.getItem("email");
var user_id = window.localStorage.getItem("user_id");

if(username == '' || username == undefined || user_id == '' || user_id == undefined) {
    Ext.Viewport.add(Ext.create('aa.view.Login'));
} else {
    Ext.Viewport.add(Ext.create('aa.view.Main'));
}

ログインビューは、ユーザーをログインさせるためのajaxリクエストを起動し、成功するとユーザーのIDとその他の情報が返されます。

onLoginButtonTap: function() {
        var values = this.getLoginForm().getValues();
        var that = this;
        // do the ajax login
        Ext.Ajax.request({
            url: 'http://localhost:8000/session',
            method: 'POST',
            params: values,
            timeout: 10000, // time out for your request

            success: function(result) {
                // let's get the email and id into local storage
                var json = Ext.decode(result.responseText);
                console.log(json);
                window.localStorage.setItem('user_id', json.user_id);
                window.localStorage.setItem('email', json.email);

                // var neighborsStore = Ext.getStore('Neighbors');
                // neighborsStore.load();


                // load up the tab holder and destroy the login view
                Ext.getCmp('loginForm').destroy();
                Ext.Viewport.add(Ext.create('aa.view.Main'));

            },

            failure: function(){
                Ext.Msg.alert("Login Failed");
            }
        });

    }

ストアでuser_idを使用して、近くにいる他のユーザーのリストを取得します。唯一の問題は、ユーザーがログインしない限り、user_idがわからないことです。

ストアを更新するか、ログインが成功するまでロードを延期する必要があります。私はむしろ2番目のオプションを実行し、ログイン後にのみストアのロードを試みます。

これを行う方法についての情報が見つからないようです。私はもう試した

Ext.getStore('storename').load() 

しかし、それは店をリフレッシュしていません。autoLoadをfalseに設定しようとしましたが、ストアが読み込まれません。読み込みを延期するにはどうすればよいですか?

4

1 に答える 1