Flex - заполнить Combobox с помощью arrayCollection данными из javascript - PullRequest
0 голосов
/ 07 марта 2012

Я разрабатываю панель в Photoshop с Flex и Extendscript. Я довольно близок к тому, чтобы заставить это работать, но с моими навыками Flex у меня возникла небольшая проблема с массивом, который я извлекаю из файла jsx. Массив хорошо отображается в окне предупреждения, но где-то между моим разделением и созданием новой коллекции что-то не так. Спасибо за любую помощь в этом.

Вот мой Flex

protected function loadData():void {
    var grabFolderNames:SyncRequestResult = CSXSInterface.instance.evalScript("labNames");
    var list:String = grabFolderNames.data;
    var array:Array = list.split(",");
    var arrayCollection:ArrayCollection = new ArrayCollection();
    arrayCollection.source = array;
    labFolderList.dataProvider = arrayCollection;
}

а вот jsx

function labNames() {
  var labs = ["Red", "Green", "Blue", "Purple", "Yellow"];
    alert("This function is firing" + labs);
}

Ответы [ 2 ]

0 голосов
/ 08 марта 2012

1) Вам следует изменить метод labNames (), чтобы он возвращал массив:

function labNames() {
    var labs = ["Red", "Green", "Blue", "Purple", "Yellow"];
    return labs;
}

2) Убедитесь, что в оболочке HTML для вашего flex-объекта у вас есть allowScriptAccess="always" (или allowScriptAccess="sameDomain")для включения связи javascript / Flex.

3) Если это все еще не работает, замените

var grabFolderNames:SyncRequestResult = CSXSInterface.instance.evalScript("labNames");

на:

var obj:* = CSXSInterface.instance.evalScript("labNames");

, затем установите точку остановав этой строке и посмотрите, заполняется ли «obj» некоторыми данными, и сообщите здесь результаты.

Надеюсь, это поможет.

0 голосов
/ 07 марта 2012

Я не знаком с CSXSInterface, но, поскольку labNames() просто отображает строку в предупреждении и не возвращает ее в виде строки, grabFolderNames.data может не содержать того, что вы ожидаете, что она будет содержать. Почему бы вам не проверить его значение с помощью отладчика?

...