2015-04-28 116 views
0

在文本輸入屏幕(類型5)中,我有一個包含多個答案項目的下拉輸入元素(答案類型6)。在離開確定後,我想將選定答案項目的標籤存儲在本地變量中。調用getAnswerData代替給我答案項目的客戶端密鑰。如何訪問標籤?如何訪問Movilizer答案中選定答案項的標籤

回答

1

您可以做的是在onLeaveOkPersistAssignment中使用getAnswerValue,並將該值分配到新的本地var中。 $地方:selectedItem屬性。 通過這樣做,clientKey將被存儲在這個var中。在下一個或後續屏幕上,您可以使用此clientKey訪問正確的數組pos值。

例子: 開始時,您的問題可能是這樣的:

question key="q0" type="5" title=""> 
      <answer key="q0a0" nextQuestionKey="q1" dummyAnswer="true" attributeType="6"> 
       <item clientKey="0" dummyAnswerItem="true" /> 
       <text/> 
      </answer> 
      <onEnterAssignment> 
$local:myArray = 
{ 
    0:'Product 1'; 
    1:'Product 2'; 
    2:'Product 3'; 
}; 

addAnswer($answer:'q0a0', null, 'Dropdown List'); 
for(items:$local:myArray) 
{ 
    addAnswerItem($answer:'q0a0', null, '0', items, $local:myArray[items]); 
} 
      </onEnterAssignment> 

此示例包含一個dummyAnswer(鍵= q0a0)和dummyAnswerItem,在onEnterAssignment您呼叫使用addAnswer的答案()並分配使用addAnswerItem的答案項目。 現在在這個答案的onLeaveOkPersistAssignment中,您正在使用getAnswerValue(),在使用getAnswerValue時,您將clientKey分配給本地var。

<onLeaveOkPersistAssignment> 
    $local:selectedItem = getAnswerValue($answer:'q0a0'); 
</onLeaveOkPersistAssignment> 

你現在可以做的,這是在使用ChangeEvents的的或後續屏幕在同一屏幕上:

<question key="q1" type="0" title=""> 
     <answer key="q1a0" nextQuestionKey="END" dummyAnswer="true"/> 
      <onEnterAssignment> 
       addAnswer($answer:'q1a0', null, $local:myArray[$local:selectedItem]); 
      </onEnterAssignment> 
</question> 

這允許您打印所選項目的標籤上的下一個屏幕。

+0

還有兩件事情還不清楚: 1.)答案是否需要動態添加?還有一種方法可以用靜態答案項目來處理這個問題嗎? 2.)建議使用值爲null的clientKey參數調用addAnswer? –

+0

1.它取決於,如果label和clientKey是相同的,則不需要動態添加它們。如果沒有,這意味着你將不得不。通過嘗試使用getter方法訪問標籤時,客戶端密鑰將始終返回,這就是爲什麼我在示例中使用了動態方式。 2.你可以肯定地定義一個clientKey val,但是因此只有一個可用的答案,我把它排除在外。 –