ScriptUI: Как обновить отображение элементов окна?

Статус
Закрыто для дальнейших ответов.

Eugenyus

Модератор
Топикстартер
12 лет на форуме
Сообщения
1 960
Реакции
3 588
Дано:
Глобально определенный массив var myArr = ["1","2","3","4","5","6"];
Окно типа "dialog", в котором есть элемент var myList = w.panel.add("dropdownlist",udefined,myArr);
Кнопка "Настройки" (butPrefs): вызывает функцию, в которой в другом окне через checkbox-ы массив меняет содержимое, допустим, на myArr = ["1","3","4","6"];

Задача: правильно передать измененный массив в dropdownlist.

Делаю так:
Код:
butPrefs.onClick = function(){
prefs(); //Вызываемая функция, меняющая содержимое массива
myList.items = myArr; //вроде как переприсвоили списку содержимое
}

Выпадающий список внешне не меняется — видим те же шесть элементов. Однако, при таком примере, если теперь выбрать, к примеру "2", выполнено будет действие по элементу "3", т.е. массив передан, но отображается по-старому.

Пробовал закрывать-открывать окно:
Код:
w.close();
myList.items = myArr;
w.show();
из разных мест запускать по-новой скрипт (функция настроек сохраняет массив в отдельный файл, из которого скрипт при запуске его считывает) — не помогло.
Спасибо.
 

Eugenyus

Модератор
Топикстартер
12 лет на форуме
Сообщения
1 960
Реакции
3 588
Ответ: ScriptUI: Как обновить отображение элементов окна?

Задача решена.
Код:
myList.removeAll(); //Удалили из списка всё
for (i = 0; i < myArr.length; i++){
     myList.add("item",myArr[i]); //Добавили новые элементы
     }
Код вставил в функцию настроек, и всё заработало.
 
Статус
Закрыто для дальнейших ответов.