2016-01-20 78 views
0

我想问一下,只要if语句为真,是否有可能只在工具栏中显示按钮。工具栏中的分机js按钮

对于我来说,我这里有

 { 
      xtype: 'toolbar', 
      dock: 'bottom', 
      items: [ 
       { 
        xtype: 'button', 
        text: 'Pay!', 
        handler: function() { 
         console.log('haha'); 
        } 
       } 
      ] 
     } 

,有一个按钮

,但我只是想显示按钮的薪酬只要电网不为空工具栏的一个片段(我也有一个网格)

这怎么可能。

谢谢!

回答

0

您必须绑定到指示行计数更改的所有事件。其中大多数是商店事件:

xtype:'grid', 
tbar:[{ 
    xtype:'button', 
    itemId:'Test' 
}], 
buttonchange:function() { 
    this.down('button[itemId=Test]').setVisible(this.getStore().getCount()>0); 
}, 
listeners:{ 
    viewready:function(gridview) { 
    var grid = gridview.ownerCt; 
    grid.buttonchange(); 
    store.on({ 
     load: grid.buttonchange(), 
     add: grid.buttonchange(), 
     remove: grid.buttonchange(), 
     clear: grid.buttonchange(), 
     filterchange: grid.buttonchange(), 
     scope: grid 
    }); 
    } 
} 
0

由于您的网格数据由商店处理,您必须添加商店载入事件侦听器。

我为您创建了working fiddle

0

如果您使用的是ExtJs5/6 +,您可能可以将按钮的可见性绑定到商店计数。

喜欢的东西:

{ 
    xtype: 'toolbar', 
    dock: 'bottom', 
    items: [ 
     { 
      xtype: 'button', 
      text: 'Pay!', 
      bind: { 
       hidden: '{!storeCount}' 
      } 
      handler: function() { 
       console.log('haha'); 
      } 
     } 
    ] 
} 

而你需要自己设置STORECOUNT作为属性并不能直接访问(见https://www.sencha.com/forum/showthread.php?286770-unable-to-bind-view-to-store-size

假设你已经yourStore视图模型宣布,在ViewController你应该可以做

initViewModel: function(viewModel) { 
    viewModel.bind('{yourStore}', function(store) { 
     if(store) { 
      store.on('datachanged', function() { 
       this.set('storeCount', this.getCount()) // this is the viewModel as I set the scope of the function 
      }); 
     } 
    }, viewModel); 
}