javascript - Ext JS 中的状态选择

标签 javascript extjs

我有一个包含元素的常规树。我想做的是: 当我重新加载页面时,所选项目必须与之前相同(我仅选择树中的 1 个项目)。

enter image description here

例如,当我单击“Sue Potato”时 - 它被选中,当我刷新页面时,它必须看起来相同(也被选中)。 我尝试在 Sencha 文档上阅读一些 Stateful、Provider、Manager,但没有明白。

Controller 代码:

Ext.define('FirstApp.controller.Main', {
  extend: 'Ext.app.Controller',
  refs: [
    {
      ref: 'grid',
      selector: 'lesson-grid'
    },
    {
      ref: 'tree',
      selector: 'school-tree'
    }
  ],

  init: function() {
    Ext.state.Manager.setProvider(Ext.create('Ext.state.LocalStorageProvider'));
  }
});

树代码:

 Ext.define('FirstApp.view.SchoolTree', {
  extend: 'Ext.tree.Panel',  
  xtype: 'school-tree',
  stateful: true,
  stateId: 'stateGrid',
  stateEvents:['selection'],

  constructor: function() {
    var that = this;
    this.store = Ext.create('FirstApp.store.School');
    this.store.on('load', function () {
      that.getSelectionModel().select(1, true);
    });
    this.callParent(arguments);

    this.getState = function() {
      return that.getSelectionModel().getSelection();
    };

    this.applyState = function() {

    };
  }
});

非常感谢您的帮助。

最佳答案

这是上述要求的工作代码。我必须获取所选元素的 id,然后将其传递给 applyState

Ext.define('FirstApp.view.SchoolTree', {
  extend: 'Ext.tree.Panel',  
  xtype: 'school-tree',
  stateful: true,
  stateId: 'stateTree',
  stateEvents:['selectionchange'],

  constructor: function() {
    var that = this;
    this.store = Ext.create('FirstApp.store.School');
    this.store.on('load', function () {
      that.getSelectionModel().select(1);
    });
      this.callParent(arguments);
  },

  getState: function() { 
      return {
        'stateTree': this.getSelectionModel().getSelection()[0].getId()
      };
  },

  applyState: function(state) {
    var me = this;
    this.store.on('load', function(record) {
      record = this.getById(state.stateTree); 
      me.getSelectionModel().select(record);
    });
  }
});

关于javascript - Ext JS 中的状态选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32502265/

相关文章:

javascript - PerformanceTiming.responseStart 是指向 HTML 还是 headers 开始?

javascript - 使用我的 if 语句更精确

javascript - 网格拖放 : Suppress for some records (groups)

extjs - 加载网格后如何选择网格中的行?

extjs - 您可以更改显示值中的选择字段选取器记录吗?

javascript - Ember 可编辑表格单元格

javascript - 将 moment.js 默认设置为特定日期时间

javascript - Nativescript 真实设备日期和时间

javascript - WebKit 浏览器中的渲染错误

javascript - Ext.Button 上没有命名的方法