2015-04-20 4 views
1

Я тестирую новые вещи в extjs, и я хочу выбрать xtype в зависимости от значения, которое отправляется из базы данных. Значение является логическим. Поэтому, когда он является ложным, я хочу, чтобы этот тип xtype был скрыт, и когда это правда, это кнопка.Chossing xtype using if else

Что-то вроде этого:

if (valuefield == false){ 
    xtype: 'hidden' 
} 
else{ 
    xtype: 'button' 
} 

я знаю, что значение поля содержит ложные или правда, но когда, если еще есть добавить, чем ошибка всплывает, как заставить его работать, если другое заявление ??

это мой код:

текст: 'Администратор',

xtype: 'button',          
href: 'admin', 
hrefTarget: '_self',     

queryMode : 'local', 

valueField: 'admin', 
store: Ext.create('Ext.data.Store', 
{ 
fields: ['admin'], 
autoLoad: true, 
proxy: 
{ 
    type: 'ajax', 
    url: 'admin/premision', 
    reader: 
    { 
     type: 'json', 
     root: 'data' 
    } 
} 

ответ

2

Вы должны быть в состоянии использовать встроенный, если:

xtype: valueField ? 'button' : 'hidden' 

Хотя это, вероятно, будет предпочтительнее вместо этого установите скрытое свойство:

xtype: 'button', 
hidden: valueField ? false : true 
2

Надеюсь, что эта скрипка вы дадите вам некоторую идею - https://fiddle.sencha.com/#fiddle/lho

Ext.application({ 
    name : 'Test Dynamic Xtype', 
    launch : function() { 

     Ext.define('HiddenModel',{ 
      extend: 'Ext.data.Model', 
      fields: [ 
       'hidden', Boolean 
      ] 
     }); 
     // create the Data Store - This is a memory store 
     var store = Ext.create('Ext.data.Store', { 
      model: 'HiddenModel', 
      //autoLoad: true, 
      data:[{'hidden': false}] 
     }); 

     // function that returns the xtype as string based on hidden: true| false 
     var type = function getType(hidden){ 
      if(hidden) 
       return 'textarea' 
      else 
       return 'textfield' 
     } 

     Ext.create('Ext.form.FormPanel', { 
      title  : 'Test Item Click', 
      width  : 400, 
      bodyPadding: 10, 
      renderTo : Ext.getBody(), 
      items: [{ 
       xtype: type(store.getData().items[0].data.hidden), // 
       text: 'My Field', 
       name: 'My Field', 
       value:'Hello' 

      }] 
     }); 

    } 
});