2016-08-12 64 views
2

條件隱藏選項卡我有一個tabpanel,我在第一個選項卡上捕獲購物車,第二個選項卡上的付款信息,並在第三個選項卡上顯示摘要。無法通過綁定到數據屬性Ext.js 6

我想隱藏標籤兩個if購物車總金額爲0

我遇到的問題是,當我嘗試綁定到隱藏的標籤來確定一個布爾值的公式,該選項卡不會隱藏。

Here's a poc

Ext.define('TestPanel',{ 
    extend: 'Ext.tab.Panel', 
    xtype: 'testpanel', 
    title: 'Test Panel', 
    viewModel:{ 
     data:{ 
      cartTotal: 0 
     }, 
     formulas:{ 
      hideTabTwo: function(get){ 
       return get('cartTotal') == 0 ? true : false 
      } 
     } 
    }, 

    items:[ 
     { 
      title: 'Tab 1', 
      items:[ 
       { 
        xtype: 'textfield', 
        bind:{ 
         value: '{cartTotal}' 
        } 
       }, 
       { 
        bind:{html:'Cart Total: {cartTotal}'} 
       }, 
       { 
        bind:{ 
         html: 'Hide Tab 2: {hideTabTwo}'     
        } 
       } 
       ] 
     }, 
     { 
      title: 'Tab 2', 
      html: 'omg', 
      bind:{ 
       hidden: '{hideTabTwo}' 
      } 
     }, 
     { 
      title: 'Tab 3', 
      html: 'lol' 
     } 
    ] 
}) 

Ext.application({ 
    name : 'Fiddle', 




    launch : function() { 
     Ext.create('TestPanel',{ 
      renderTo: Ext.getBody() 
     }) 
    } 
}); 

我看不出什麼錯在這裏。如果您在小提琴中查看html: 'Hide Tab 2: {hideTabTwo}'的輸出,您會看到它在真和假之間切換。

任何想法?

回答

4

我張貼this same question to Sencha's forums和一位用戶指出了正確的答案。

我的代碼和他的代碼之間的差異,綁定到hidden屬性需要包括在tabConfig屬性選項卡的第二個選項卡:

{ 
     title: 'Tab 2', 
     html: 'omg', 
     tabConfig:{ 
      bind:{ 
       hidden: '{hideTabTwo}' 
      } 
     } 
    } 

看到他的解決方案,我回去後到Ext.tab.Panel上的文檔在controlling tabs部分注意到。

我在找錯地方(的文檔中沒有提及tabConfig:/)。

0

是的,我有一個想法。爲了驗證它,我添加到您的提琴在表1:

  { 
       xtype: 'textfield', 
       bind:{ 
        hidden: '{hideTabTwo}' 
       } 
      }, 

結果是毀滅性的:綁定文本框與工作正常,但不能與標籤。

這是爲什麼?

我記得有一個問題在ExtJS中占主導地位,至少從4.2.1開始,並不是關於bind,而是關於製表符。在我自己的代碼,這完全不使用綁定,我寫了這樣的事情:

items.each(function(item) { 
    var hideItem = ... 
    item.setHidden(hideItem); 
    if(item.tab) item.tab.setHidden(hideItem); // hide tab! 
}); 

我記得我在2014年初

提交本作中煎茶論壇上的一個錯誤,請提交在Sencha論壇中也有bug報告,以增加現有票證的優先級。請記住,他們沒有在兩年內解決這個問題,所以不要期望他們能夠快速解決問題。

我無法準確解決您的問題,我會嘗試更多,如果我成功了,我會通知您。截至目前,我玩弄選項卡上的監聽器,但我沒有發現標籤後,大火已經創造了一個傾聽者,但該項目之前被激活:

 listeners:{ 
      boxready:function(me) { 
       console.log(me); 
       me.tab.setConfig({ 
        bind:{ 
         hidden: '{hideTabTwo}' 
        } 
       }); 
      } 
     } 
+1

所以我在sencha的論壇上問了這個問題,結果是因爲綁定需要在'tabConfig'屬性中發生。例如:https://fiddle.sencha.com/#fiddle/1f8v。將綁定移動到該選項卡後,該選項卡將成功顯示/隱藏。 –