【问题标题】:using local storage saved value as a text in a root text使用本地存储保存的值作为根文本中的文本
【发布时间】:2015-09-03 14:31:14
【问题描述】:

我的 extjs 视图中有一个 treeView,我需要在其中将本地存储变量的值作为根名称。当用户成功登录时,将向本地存储提供值:

Ext.define('Eits.view.OrgTreeView', {
extend : 'Ext.tree.TreePanel',
requires: ['Eits.model.OrgTreeModel'],
    width : '100%',
    region : 'center',
    border : true,
    user = this.localStorageProvider.get('name'),
    store : {
        xtype : 'tree',
        fields : Eits.model.OrgTreeModel.FIELDS,
        //model: 'Eits.model.OrgTreeModel',
        autoLoad: false,
        root: {
            id: 'rootNode',
            objectId : 'rootNode',
            leaf: false,
            expanded: false,
            text : this.user, 
            iconCls : 'mts-Tree-Node',
        },
        proxy: {
            type: 'ajax',
            url: 'orgTree/getNavigationTree.action',
            actionMethods: 'POST',
            reader: {
                type: 'json',
                root: 'data'     
            }
        }
    },...

有没有一种方法可以从本地存储中获取值并将其作为名称传递给树的根。此外,当我将静态值传递给商店根中的 text 字段时,它确实会在我的用户界面。

【问题讨论】:

    标签: extjs tree local-storage store


    【解决方案1】:

    把树店的创建移到initComponent里面:

    Ext.define('Eits.view.OrgTreeView', {
        extend: 'Ext.tree.TreePanel',
        requires: ['Eits.model.OrgTreeModel'],
        width: '100%',
        region: 'center',
        border: true,
        initComponent: function() {
            this.store = Ext.create('Ext.data.TreeStore', {
                fields : Eits.model.OrgTreeModel.FIELDS,
                autoLoad: false,
                root: {
                    id: 'rootNode',
                    objectId : 'rootNode',
                    leaf: false,
                    expanded: false,
                    text: localStorageProvider.get('name'), 
                    iconCls: 'mts-Tree-Node',
                },
                proxy: {
                    type: 'ajax',
                    url: 'orgTree/getNavigationTree.action',
                    actionMethods: 'POST',
                    reader: {
                        type: 'json',
                        root: 'data'     
                    }
                }
            });
            this.callParent();
        }
    });
    

    【讨论】:

    • 显示Uncaught ReferenceError: localStorageProvider is not defined,本地存储在用户登录成功后获取数据。我在 InitComponent 中使用了this.localStorageProvider = Ext.create('Ext.state.CookieProvider', { expires : null });。但它也不起作用。有什么办法吗?谢谢
    • 我提供的代码示例假定您要么拥有全局可用的localStorageProvider 变量,要么您可以用访问本地存储的任何方式替换它。正如您所说的“本地存储在成功登录后获取数据”,我的理解是您知道如何访问它,不是吗?如果不知道,那你怎么知道本地存储在登录后获取数据?
    • 一旦用户成功登录,我已经使用 localStorageProvider.set('data',data); 在我的浏览器 LocalStorage 中保存了一些数据,现在我尝试在 treeView.js 中使用相同的数据。如何在 LoginVIew 以外的视图中获取保存在浏览器 localstorage 中的值?谢谢
    • 在你的 LoginView 中,localStorageProvider 来自哪里?只需以完全相同的方式使其在树中可用。或者,您可以在 LoginView 中保存对本地存储的全局引用,例如window.localStorage = localStorageProvider。然后,在树的initComponent 中使用window.localStorage 而不是localStorageProvider
    • 哦.. 从 LoginView 移动到树时,您的应用可能会重新加载页面?那么全局变量当然不会持续存在。在这种情况下,您需要找出 me.localStorageProvider 在 LoginView 中的填充方式,并以相同的方式在树中填充它。
    猜你喜欢
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 2020-11-04
    • 1970-01-01
    相关资源
    最近更新 更多