2008-11-24 5 views
0

У меня есть веб-приложение, которое использует Ext-JS 2.2. В каком-то компоненте, у нас есть пустая панель инструментов, которую мы пытаемся добавить кнопку с помощьюНеобходимость обхода обхода ExtJS

myPanel.getTopToolbar().insertButton(0, [...array of buttons...]); 

Однако в IE6/7 это не удается из-за линии 20241-20242 в Ext-все-debug.js:

var td = document.createElement("td"); 
this.tr.insertBefore(td, this.tr.childNodes[index]); 

с "this.tr.childNodes ([0])" еще не существует в IE, это терпит неудачу с "недопустимым аргументом".

Реальный вопрос: Могу ли я, используя CSS, аналогичный приведенному ниже добавить ребенка к каждой панели инструментов < т.р. > так что this.tr.childNodes [0] найдено:

div.x-toolbar tr:after { content: " "; } 

Я полностью понимаю, это хак, но по юридическим причинам я не могу изменить Javascript, даже не добавлять пустую кнопку ({}) на каждую панель инструментов. Главное для любого, кто может это понять.

ответ

0

Я не думал, что существует только CSS-решение.

Для записи я закончил тем, что ввел javascript на страницу, которая переопределяет прототип Ext.Toolbar для функции insertButton(), чтобы проверить существование «this.tr.childNodes ([0])» и по умолчанию addButton(), если он не существует.

1

Если все, что вы делаете, это добавление к пустой панели

myPanel.getTopToolbar().add(buttons etc); 

Или

myPanel.getTopToolbar().addButton(..); 

Либо должны работать. Похоже, что цель insertButton заключается в том, чтобы поместить кнопку в непустую панель инструментов.

+0

Не следует вставлять кнопки изящно опускаться в addButtons в случае отсутствия? Я думаю, что мы должны рассматривать это как небольшую ошибку в ExtJs ... – Thevs 2008-12-03 21:57:11

1

Вы просмотрели добавление кнопки после рендеринга панели? Могу быть что-то вроде:

myPanel.on('render', function() { 
    this.getTopToolbar().insertButton(0, [...array of buttons...]); 
}, true); 
+0

Спасибо, но проблема была не в сроках. Оказывается, функция insertButton работает только в том случае, если что-то уже есть на панели инструментов. – 2009-01-29 17:00:05

2

То, что я должен был сделать в прошлом было включать пустую панель инструментов в моем элементе конфигурации:

TBAR: []

Тогда (и только после того, как элемента полностью реализована) используйте метод .add() для ввода кнопок.

Порядок мероприятий будет вам каждый раз. Чтобы получить ручку, требуется некоторое время.

Смежные вопросы