0

テキスト入力画面 (タイプ 5) には、いくつかの回答項目を持つドロップダウン入力要素 (回答タイプ 6) があります。休暇中は、選択した回答項目のラベルをローカル変数に保存したいと考えています。getAnswerData を呼び出すと、代わりに回答項目のクライアント キーが返されます。代わりにラベルにアクセスするにはどうすればよいですか?

4

1 に答える 1

1

できることは、onLeaveOkPersistAssignment で getAnswerValue を使用し、この値を新しいローカル変数 (例: $local: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(key=q0a0) と dummyAnswerItem が含まれています。onEnterAssignment では、addAnswer() を使用して回答を呼び出し、addAnswerItem を使用して回答アイテムを割り当てます。この回答の onLeaveOkPersistAssignment では、getAnswerValue() を使用しています。getAnswerValue を使用して、clientKey をローカル変数に割り当てています。

<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>

これにより、次の画面で選択したアイテムのラベルを印刷できます。

于 2015-04-29T07:09:45.393 に答える