2012-04-24 48 views
0

我正在研究在Google地图上显示标记的自定义控件。我有几个属性,如“maptype”,“zoom”等。它很容易在Javascript中访问它们:我可以使用#{javascript:compositeData.zoom}来获取zoom属性的值。如何从自定义控件的属性组中获取属性作为对象?

现在,这是我的问题:我用一组属性的每个标记。 组的名称是“标记”,标记有6个属性:“标题”,“图层”,“信息文本”,“图标”,“地址”和“动画”。

如果我尝试用

var markers = #{javascript:compositeData.marker}; 

我得到的萤火错误访问组:

丢失:后物业编号VAR指标= [{层= 2, 地址= Oldenzaal,动画= DROP,图标=/ogo_notes.png ...

箭头指向第一个=图层和2之间 (我不能把一个图像中的计算器)

如果我使用

var markers = #{javascript:'"' + compositeData.marker + '"'}; 

标记是一个对象,但每个对象包含标记的所有propperties的字符串。

我知道我可以做一些编码来制作每个字符串的对象,但如果不是所有属性都是必需的,这并不容易。如果属性不是必需的,则不会显示在字符串中。

我想必须有一个更简单的方法来获得每个标记为对象,所以我可以用如下代码获取图标的价值:

var icon = marker.icon 

我怎样才能做到这一点?

回答

0

您可以使用compositeData.marker.icon获取组中的属性icon。如果选中“允许多个实例”的组,然后获取属性,你将不得不去:

compositeData.marker[0].icon 
compositeData.marker[1].icon 

等等...

更新26-APR-2012(纳文)

要与客户端使用的JavaScript,你可以尝试把价值在一个隐藏的输入字段这样的:

<xp:inputHidden id="hdnIcon"> 
     <xp:this.defaultValue><![CDATA[#{javascript:var value = new Array(); 
for (var i=0 ; i<compositeData.marker.length ; i++) { 
    value.push(compositeData.marker[i].icon); 
} 
return @Implode(value, ",");}]]></xp:this.defaultValue> 
</xp:inputHidden> 

的价值这个隐藏的输入字段可以通过客户端JavaScript这样的阅读:

var value = document.getElementById("#{id:hdnIcon}").value.split(","); 
for (var i=0 ; i<value.length ; i++) { 
    <YOUR CODE> 
} 

另一种方式来做到这一点可能是compositeData.marker及其内容转换为JSON字符串,然后JavaScript的在其上运行的客户端。

+0

谢谢纳文,但我怎么能现在做这样的事情: 为(VAR I = 0;我<#{的javascript:compositeData.marker}。长度;我++){ \t VAR一个=#{JavaScript的: compositeData.marker [I]。地址}; \t alert(a); } – 2012-04-24 16:07:31

+0

对不起,我忘了提及,这是客户端JavaScript我正在工作。 var markers =#{javascript:compositeData.marker};我发现 var markers ='#{javascript:compositeData.marker}';但是我发现 var markers ='#{javascript:compositeData.marker}'; 给了我一个字符串值 [{layer = 2,address = Oldenzaal,animation = DROP,title = test title,icon =/logo_notes.png,infotext = fzxcxzv},{layer = 1,address = lonneker,animation = DROP,title = asdfasdfdafasfas,icon =/marker_pin_red.png,infotext = test}] – 2012-04-25 12:14:33

+0

我可以同时使用客户端JavaScript和serverside javascript并将它们结合使用吗? – 2012-04-25 12:20:55