【问题标题】:How to assign a value to a variable in extjs, which can be accessed globally over the entire extjs application如何为extjs中的变量赋值,可以在整个extjs应用程序中全局访问
【发布时间】:2016-07-13 08:10:32
【问题描述】:

我是 ExtJS 的新手。我使用 ExtJS 设计了一个登录页面,其中一个值从 servlet 响应成功返回到 JS 文件,如下所示。

LoginServlet.java

String user_role = "User1 - Admin";
myObj.addProperty("success", true);
myObj.addProperty("user_role", user_role);
out.println(myObj.toString());
out.close();

login.js

buttons: [{
                text: 'Login',
                handler: function(button)
                {
                    var formData = this.up('form').getForm();
                    formData.submit({
                        clientValidation: true,
                        url: '/LoginServlet',
                        method: 'POST',
                        success: function(form, action) {
                            user_role = Ext.JSON.decode(action.response.responseText);
                            Ext.MessageBox.alert('User_Role', user_role.user_role);
                            window.location = 'userhome.jsp';
                        },
                        failure: function(form, action) {
                        }
                    });
                }
            }

在Ext.MessageBox.alert('User_Role', user_role.user_role);,我收到如图所示的警告消息。

我需要将值分配给一个全局变量,以便我可以在我的整个 ExtJS 应用程序中访问它(我有一个名为 header.js 的通用 js 文件,它包含在应用程序的所有 JSP 文件中,我想在 header.js 中显示 'user_role' 的值,以便它显示在所有 JSP 文件中)。

注意:我已将“user_role”变量定义为单独文件 globalVar.js(代码如下)中的全局变量,并且我已将 globalVar.js 作为所有 JSP 文件中的第一个 js 文件包含在内。

var user_role;

我正在使用 ExtJS 4.2。请提出一种方法来实现这一点。

【问题讨论】:

标签: java extjs extjs4 extjs4.1 extjs4.2


【解决方案1】:

在实用程序中为您的应用程序添加一个单例类。

    Ext.define('MyApp.utilities.GlobalVar', {
      singleton : true,
      user_role : null
    }


    buttons: [{
                text: 'Login',
                handler: function(button)
                {
                    var formData = this.up('form').getForm();
                    formData.submit({
                        clientValidation: true,
                        url: '/LoginServlet',
                        method: 'POST',
                        success: function(form, action) {
                            user_role = Ext.JSON.decode(action.response.responseText);
                            Ext.MessageBox.alert('User_Role', user_role.user_role);
                            **MyApp.utilities.GlobalVar.user_role = user_role.user_role;**
                            window.location = 'userhome.jsp';
                        },
                        failure: function(form, action) {
                        }
                    });
                }
            }

在表单提交成功时分配全局变量,您可以在应用程序的任何地方使用全局变量。 [使用 MyApp.utilities.GlobalVar.user_role]

【讨论】:

    【解决方案2】:

    如果您使用带有 storeId 的商店将整个用户数据保存在一个地方,那就太好了。

    一旦您从服务器收到响应。使用该值更新您的商店。

    可以从整个应用程序访问该商店。

    只做分机。 getStore('storeId') where store if 是 store 的 id

    它也会让您的用户数据井井有条。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 2018-10-18
      • 1970-01-01
      • 2019-12-22
      • 2014-11-10
      • 2020-11-09
      相关资源
      最近更新 更多