extjs не может обработать условный оператор

#extjs #panel #toolbar

#extjs #панель #панель инструментов

Вопрос:

У меня есть extjs tabpanel и toolbar , определенные следующим образом.

 tbar : {
{
xtype:'box',
tpl:[
'<table><tr><td>',
'<b>Total Prelim Shares:</b> ',
'</td><tpl if="totalPrelimShares < 0" ><td width="30" style = "color:red">',
'{totalPrelimShares}',
'</td></tpl><td width="10">',
'<span class="xtb-sep"></span>',
'</td><td>',
'<b>Total Prelim Gross Amount:</b>',
'</td><td width="70">',
'{totalPrelimGrossAmount}',
'</td><td>',
'<b>Total Prelim Net Amount:</b>',
'</td><td width="70">',
'{totalPrelimNetAmount}',
'</td></tr><table>'             

],
ref:'../ipTotalBar',
data:{totalPrelimShares :'0'}
}
}
  

Я называю это так:

 var obj = {totalPrelimShares :  -10,totalPrelimNetAmount:20,totalPrelimGrossAmount : 30 };
this.ipTotalBar.update(obj);
  

Ошибок нет, но {totalPrelimShares} не отображается. Когда я удаляю tpl if="totalPrelimShares < 0" > , он работает нормально.

Комментарии:

1. используете ли вы amp; > или amp; lt, также убедитесь, что вы определили свой шаблон как Ext.XTemplate. Я думаю, что по умолчанию может быть Ext. Шаблон

Ответ №1:

Проблема, с которой вы сталкиваетесь, может заключаться в том, что XTemplate не знает, что totalPrelimShares такое. В примерах в XTemplate документации всякий раз, когда используется переменная, переданная в конфигурацию шаблона (как totalPrelimShares в вашем случае), на нее всегда ссылаются с помощью this.* . Например:

 <tpl if="this.totalPrelimShares < 0">
  

Если это не сработает, вы также можете попробовать использовать встроенные операторы {[ ... ]} , как определено в документации:

 <tpl if="{[totalPrelimShares]} < 0">
  

Ответ №2:

 <tpl if="totalPrelimShares < 0" >
  

должно быть

 <tpl if="totalPrelimShares amp;< 0" >
  

< , > и " должны быть записаны как сущности amp;< , amp;> и amp;quot; соответственно, если используются в условном. Документация по этому вопросу неверна.