Sencha touch nestedlist第一级上的后退按钮

Sencha touch nestedlist第一级上的后退按钮,sencha-touch,Sencha Touch,我有一个嵌套列表,当用户按下屏幕上的按钮时,它会显示几个级别。当nestedList出现时,没有后退按钮(因为我们位于树的顶部,所以可以理解,没有地方可以返回),而点击列表中的项目会带您进入带有后退按钮的屏幕 我想在第一个屏幕上添加一个后退按钮。我已经成功地做到了这一点,但在nestedList中的每个子列表中都添加了相同的后退按钮——这在顶层有一个后退按钮,在后续的每个级别有两个后退按钮(一个将您完全带出nestedList,另一个将您带上一个级别) 有人能帮我弄清楚如何在每个屏幕上都有一个后

我有一个嵌套列表,当用户按下屏幕上的按钮时,它会显示几个级别。当nestedList出现时,没有后退按钮(因为我们位于树的顶部,所以可以理解,没有地方可以返回),而点击列表中的项目会带您进入带有后退按钮的屏幕

我想在第一个屏幕上添加一个后退按钮。我已经成功地做到了这一点,但在nestedList中的每个子列表中都添加了相同的后退按钮——这在顶层有一个后退按钮,在后续的每个级别有两个后退按钮(一个将您完全带出nestedList,另一个将您带上一个级别)

有人能帮我弄清楚如何在每个屏幕上都有一个后退按钮,包括关闭列表的顶层按钮吗

非常感谢


PS目前我正在使用的一个讨厌的解决方法是在每个屏幕的右上角都有一个“关闭”按钮。

我不知道您对Sencha Touch的内部工作有多满意,所以如何操作取决于您--

当显示嵌套列表时(在initComponent函数中创建,带有
hidden:true
),后退按钮在那里隐藏,然后在后退点击时,OnItemAP和setActivePath都将在其函数末尾附近调用syncToolbar,当深度为0时,后退按钮在此处隐藏

所以有两个地方你需要做点什么,第一个是initComponent,这很简单——只需在nestedList中实现initComponent,调用超类的initComponent,然后将backButton设置为可见

var myNestedList = new Ext.NestedList({
  ...,
  initComponent: function() {
    myNestedList.superclass.initComponent.call(this);
    this.backButton.setVisible(true);
  },
  ...
});
那就要注意从一开始就表现出来。。如何处理修复同步工具栏取决于您。您可以使用Ext.override,您可以直接将整个syncToolbar功能复制并粘贴到nestedList对象中,该对象也会覆盖它,或者您可以执行别人告诉您不要执行的操作,直接编辑sencha-touch.js文件。不管你决定怎么做,你想要改变的是

syncToolbar: function(card) {
  ...
  backToggleMth = (depth !== 0) ? 'show' : 'hide';

  if (backBtn) {
    backBtn[backToggleMth]();
    if (parentNode) { 
      backBtn.setText(backBtnText); 
    }
  }
  ... };

您可以将
backToggleMth
更改为
='show'
,也可以将
if(backBtn{…}
一起删除。

在Sencha Touch 2.2中,我必须使用不同的代码:

Ext.create('Ext.NestedList', {
  ...,
  listeners: {
    initialize: function(obj) {
      obj.getBackButton().show();
    },
    back: function(obj, node, lastActiveList, detailCardActive) {
      switch(node.getDepth()) {
      case 1:
        obj.getBackButton().show();
        break;
      case 0:
        alert("wohooooooo!");
        break;
      }
    }
  }
}

很好,这帮助我解决了问题!我决定重写syncToolbar和onBackTap属性。我无法使您提供的initComponent代码段正常工作,而是在新的Ext.NestedList({…})定义之后添加了MyApp.views.nestedList1.backButton.setVisible(true)。