2012-04-24 45 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

相關問題