В моем приложении Enyo у меня есть VirtualRepeater
, который производит Control
с различными текстовыми дисплеями и IntegerPicker
.
У меня есть две проблемы с этим ретранслятором:
1) Если получено три строки, нажатие на IntegerPicker
в строках 1 и 2 вызывает всплывающий пользовательский интерфейс выбора поверх верхней части IntegerPicker
в строке 0.
2) Я инициализирую каждый IntegerPicker
максимальным значением, используя setMax()
. Однако, если получено три строки, IntegerPickers
в строках 0 и 1 будет иметь то же максимальное значение, что и в строке 2.
Похоже, что создается только один IntegerPicker
и используется в первом ряду.
Я попытался заменить VirtualRepeater
на Repeater
и изменил свою функцию создания строки репитера, чтобы она возвращала новый экземпляр элемента, содержащего IntegerPicker
, вместо того, чтобы возвращать true. Однако это приводит к ошибке:
предупреждение: enyo.Component.addComponent (): повторяющееся имя компонента "itemName" нарушает правило уникального имени под владельцем, заменяя существующий компонент в хэше и продолжая, но это условие ошибки и должно быть исправлено.
Кажется, Repeater
нужно, чтобы их делегаты были встроены, что выглядит довольно не элегантно.
Этот пример кода иллюстрирует проблему:
enyo.kind({
name:"Test",
kind:enyo.Control,
components: [
{
kind: "VirtualRepeater",
onSetupRow: "setupRow",
components: [{
name: "theIP", kind: "IntegerPicker", min:0
}]
}
],
setupRow: function(inSender, inIndex) {
if (inIndex < 3) {
this.$.theIP.setMax(inIndex);
return true;
}
return false;
}
});
Как я могу создать произвольное число IntegerPicker
с в моем приложении? Любая помощь приветствуется!