繁体   English   中英

Flex-使用arrayCollection用来自JavaScript的数据填充Combobox

[英]Flex - populate Combobox with arrayCollection with data from javascript

我正在使用Flex和Extendscript在Photoshop中开发一个面板。 我几乎可以使它正常工作,但是凭借我的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);
}

我不熟悉CSXSInterface,但是,由于labNames()仅在警报中显示字符串,并且不将其作为String返回,因此grabFolderNames.data可能不包含您期望的内容。 为什么不使用调试器检查其值?

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”并在此处报告结果。

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM