В моем приложении 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
s нуждаются в том, чтобы их делегаты были созданы встроенными, что кажется довольно неэлегантным.
Этот пример кода иллюстрирует проблему:
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
s в своем приложении? Любая помощь приветствуется!