答題卡元件
更新時間:2024-04-22 19:18:32
答題卡元件包含普通答題和快速問答兩種型別的元件,兩種元件採用同樣的事件體系,所以僅需要實例化一個答題卡 SDK,將同一個實例傳給兩種不同的答題元件使用。
- 普通答題有單選、多選、評分和投票這幾種題型,並且還具有限時答題功能。
- 快速問答介面與普通答題不同,且僅包含單選和多選題目。
在引入及使用本功能元件前,需要先對互動功能接收端 SDK 進行公共配置,詳情請查看:互動功能接收端 UI 元件 - 配置 SDK。
普通答題
引入
線上檔案引入方式
// script 标签引入,根据版本号引入JS版本。
<script src="https://websdk.videocc.net/interactions-receive-sdk-ui-default/0.24.0/lib/PcAnswerCard/PcAnswerCard.umd.min.js"></script>
// PC端
<script>
const AnswerCard = window.PolyvIRScene.PcAnswerCard.default;
</script>
// script 标签引入,根据版本号引入JS版本。
<script src="https://websdk.videocc.net/interactions-receive-sdk-ui-default/0.24.0/lib/MobileAnswerCard/MobileAnswerCard.umd.min.js"></script>
// 移动端
<script>
const AnswerCard = window.PolyvIRScene.MobileAnswerCard.default;
</script>
import 方式引入(推薦)
// PC端
import AnswerCard from '@polyv/interactions-receive-sdk-ui-default/lib/PcAnswerCard/index';
// 移动端
import AnswerCard from '@polyv/interactions-receive-sdk-ui-default/lib/MobileAnswerCard/index';
使用方式
答題卡元件內部基於 SDK 處理了大部分業務邏輯,接入方僅需監聽 to-show 和 to-hide 事件,去控制元件的可見性即可。另外,status-changed 事件會在答題資料發生變化時觸發,並且含有答題狀態,可根據該狀態做相應處理,比如修改模態框/提示文字等。
程式碼範例
以 PC 端接入為例:
<template>
<div v-show="isShowAnswerCard">
<h2>{{ answerCardTitle }}</h2>
<answer-card
:answer-card-sdk="answerCardSdk"
@to-show="onSetAnswerCardVisible(true)"
@to-hide="onSetAnswerCardVisible(false)"
@status-changed="onStatusChanged"
/>
</div>
</template>
<script>
import { AnswerCard as AnswerCardSDK } from '@polyv/interactions-receive-sdk';
import AnswerCard from '@polyv/interactions-receive-sdk-ui-default/lib/PcAnswerCard/index';
export default {
components: {
AnswerCard,
},
data() {
return {
// 答题卡SDK实例
answerCardSdk,
// 是否显示答题卡
isShowAnswerCard: false,
// 外部弹窗(容器)标题
answerCardTitle: '',
};
},
created() {
this.answerCardSdk = new AnswerCardSDK();
},
beforeDestroy() {
this.answerCardSdk?.destroy();
},
methods: {
onSetAnswerCardVisible(visible) {
this.isShowAnswerCard = visible;
},
onStatusChanged(status) {
if (status === 'isShowResult' || status === 'isShowAnswer') {
this.answerCardTitle = this.answerCardSdk.curSubmittedAnswer ? '答题结果' : '未作答';
} else {
this.answerCardTitle = '答题卡';
}
},
},
};
</script>
Attributes
| 屬性名 | 類型 | 預設值 | 含義 |
|---|---|---|---|
| answerCardSdk | Object | null | 答題卡 SDK 實例 |
| lang | string:'zh_CN', 'en' | 'zh_CN' |
語言 |
| delayTime | number | 行動端 8000,PC端 2000 | 延遲觸發顯示時間,單位毫秒 |
Events
| 事件名 | 參數類型 | 參數含義 | 說明 |
|---|---|---|---|
| to-show | Object | 題目資料 | 收到題目後觸發,表示需要顯示彈窗 |
| to-hide | Object | 題目資料 | 答題終止後觸發,表示需要隱藏彈窗 |
| status-changed | string: 'isShowQuestion', 'isShowResult', 'isShowAnswer' | 答題卡內部顯示狀態 | 答題卡內部顯示狀態發生變化時觸發。isShowQuestion:正在顯示題目,PC和行動端元件共有狀態;isShowResult:正在顯示答題結果;PC和行動端元件共有狀態;isShowAnswer:正在顯示答案,行動端元件特有狀態。可根據此狀態,執行修改彈窗標題等操作。見demo示範。 |
to-show 事件參數說明
to-show 事件包含一個物件型別的事件參數,該物件具體欄位如下。
| 屬性名 | 類型 | 含義 |
|---|---|---|
| itemType | number: 0, 1 | 答題卡類型,0 表示普通答題卡,1 表示快速問答 |
| type | string: 'C', 'R', 'S', 'V' | 題目類型, C:多選題, R:單選題, S:評分題, V:投票題 |
| name | string | 題目描述 |
| questionId | string | 題目id |
| duration | number | 限時題目特有欄位,答題時間,單位秒 |
| options | string[] | 選項陣列 |
| tips | string[] | 提示陣列(評分題特有,分值提示) |
to-hide 事件參數說明
to-hide 事件包含一個物件型別的事件參數,該物件具體欄位如下。
| 屬性名 | 類型 | 含義 |
|---|---|---|
| itemType | number: 0, 1 | 答題卡類型,0 表示普通答題卡,1 表示快速問答 |
| type | string | 題目類型 |
| questionId | string | 題目id |
Methods
| 方法名 | 參數 | 說明 |
|---|---|---|
| backToResult | 無參數 | 將答題卡元件內部狀態切換成"isShowResult" (檢視結果) 狀態,僅適用於行動端元件 |
快速問答
接入邏輯同普通答題。可基於 to-show 和 to-hide 事件的參數判斷題目為單選/多選。
引入
線上檔案引入方式
// script 标签引入,根据版本号引入JS版本。
<script src="https://websdk.videocc.net/interactions-receive-sdk-ui-default/0.24.0/lib/PcQuickAnswer/PcQuickAnswer.umd.min.js"></script>
// PC端
const QuickAnswerCard = window.PolyvIRScene.PcQuickAnswer.default;
// script 标签引入,根据版本号引入JS版本。
<script src="https://websdk.videocc.net/interactions-receive-sdk-ui-default/0.24.0/lib/MobileQuickAnswer/MobileQuickAnswer.umd.min.js"></script>
// 移动端
const QuickAnswerCard = window.PolyvIRScene.MobileQuickAnswer.default;
import 方式引入(推薦)
// PC 端
import QuickAnswerCard from '@polyv/interactions-receive-sdk-ui-default/lib/PcQuickAnswer/index';
// 移动端
import QuickAnswerCard from '@polyv/interactions-receive-sdk-ui-default/lib/MobileQuickAnswer/index';
使用方式
同樣地,PC端快速問答僅提供內容元素,所以需要接入方設定容器元素和控制可見性。
程式碼範例
// 快速问答基础 mixin
import { AnswerCard as AnswerCardSDK } from '@polyv/interactions-receive-sdk';
export default {
data() {
return {
// 答题卡SDK实例
answerCardSdk,
// 是否显示答题卡
isShowAnswerCard: false,
};
},
created() {
this.answerCardSdk = new AnswerCardSDK();
},
beforeDestroy() {
this.answerCardSdk?.destroy();
},
methods: {
onSetQuickAnswerCardVisible(visible, question) {
this.isShowAnswerCard = visible;
},
},
};
<!-- @file 快速问答 PC 端 -->
<template>
<div v-show="isShowAnswerCard">
<quick-answer-card
:answer-card-sdk="answerCardSdk"
@to-show="(question) => onSetQuickAnswerCardVisible(true, question)"
@to-hide="(question) => onSetQuickAnswerCardVisible(false, question)"
/>
</div>
</template>
<script>
import mixin from './mixin';
export default {
mixins: [mixin],
};
</script>
而web行動端顯示形式為橫向長條形的答題卡,目前Polyv SaaS 平台直播觀看頁會將其顯示在行動端選單之上。行動端元件內部會控制快速問答的顯示與否。
<!-- @file 快速问答移动端 -->
<template>
<div>
<quick-answer-card
:answer-card-sdk="answerCardSdk"
/>
</div>
</template>
<script>
import mixin from './mixin';
export default {
mixins: [mixin],
};
</script>
Attributes
| 屬性名 | 類型 | 預設值 | 含義 |
|---|---|---|---|
| answerCardSdk | Object | null | 答題卡 SDK 實例 |
Events
| 事件名 | 參數類型 | 參數含義 | 說明 |
|---|---|---|---|
| to-show | 無參數 | - | 收到題目後觸發,表示需要顯示元件 |
| to-hide | 無參數 | - | 答題終止後觸發,表示需要隱藏元件 |
| success-submit | 無參數 | - | 提交答題卡成功後回調 |
