界面實(shí)現(xiàn)
創(chuàng)新互聯(lián)專(zhuān)注于大化企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站制作。大化網(wǎng)站建設(shè)公司,為大化等地區(qū)提供建站服務(wù)。全流程按需制作網(wǎng)站,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)無(wú)論是WEX還是BEX,開(kāi)發(fā)各種客觀題模塊都是最常見(jiàn)的。但是,最近在利用業(yè)余時(shí)間想開(kāi)發(fā)一個(gè)學(xué)生使用的小型客觀題系統(tǒng)時(shí)遇到了麻煩。首先,在論壇上搜索到了大量相似問(wèn)題。問(wèn)題或者過(guò)于簡(jiǎn)單,或者過(guò)于特殊。且看一下本人提供的客觀題界面,我相信這種設(shè)計(jì)思路還是與大多數(shù)應(yīng)用需求相一致的。
這是單選題界面和多選題界面。
注意:我每一個(gè)小題旁邊放置的按鈕是便于學(xué)生自我測(cè)試時(shí)看參考答案時(shí)使用的。這個(gè)小功能設(shè)計(jì)比較簡(jiǎn)單(我使用的是PopOver組件,其內(nèi)的span對(duì)應(yīng)的bind-text令其等于 $model.singleData.val("fAnswer")類(lèi)似的內(nèi)容即可實(shí)現(xiàn)即時(shí)地查看對(duì)應(yīng)小題的答案)。
問(wèn)題
在開(kāi)發(fā)類(lèi)似于上面的系統(tǒng)時(shí)注意到不少像我這樣的初學(xué)者存在與我十分類(lèi)似的困惑。
(補(bǔ)注:這樣人可能以前有JAVA,C#,VB等UI開(kāi)發(fā)經(jīng)驗(yàn),但遺憾的是,這些軟件開(kāi)發(fā)思路與X5中的H5開(kāi)發(fā)思想發(fā)生了重大變化--不知大伙與我意見(jiàn)一致否?)
歸納起來(lái),問(wèn)題有:
1,list組件的onClick 事件中 如何得到 list某一行的id? 地址:http://doc.wex5.com/comps-list/。
2,如何在list組件中放置radio組件或者radioGroup組件實(shí)現(xiàn)類(lèi)似于我實(shí)現(xiàn)的上述選擇題界面?
3,在上面界面前提下,在用戶(hù)做過(guò)好幾個(gè)小題后,如果對(duì)比答案(比較庫(kù)中正確與錯(cuò)誤的答案,檢查其做題效果如何)?
補(bǔ)充
由于我上述小系統(tǒng)比較簡(jiǎn)單,所以暫時(shí)只考慮使用本地json方式存儲(chǔ)試題內(nèi)容,單選,多選,判斷等都各自對(duì)應(yīng)一個(gè)JSON文件。例如,單選題文件singleData.json類(lèi)似于如下結(jié)構(gòu):
[
{"fCode":"0401",
"fTrunk":"在數(shù)據(jù)庫(kù)表格中唯一標(biāo)識(shí)一條記錄的是( ?。?,
"fChoiceA":"A.主鍵",
"fChoiceB":"B.候選鍵",
"fChoiceC":"C.索引",
"fChoiceD":"D.關(guān)鍵字",
"fAnswer":"A"
},
{"fCode":"0402",
"fTrunk":"下列哪一種不屬于ACCESS 2010的數(shù)據(jù)類(lèi)型( ?。?。",
"fChoiceA":"A.數(shù)字",
"fChoiceB":"B.文本",
"fChoiceC":"C.附件",
"fChoiceD":"D.插件",
"fAnswer":"D"
},
{"fCode":"0403",
"fTrunk":"下列哪一種不屬于ACCESS 2010的關(guān)系表達(dá)式中的邏輯運(yùn)算符( ?。?。",
"fChoiceA":"A.And",
"fChoiceB":"B.Not",
"fChoiceC":"C.Or",
"fChoiceD":"D.Else",
"fAnswer":"D"
},
{"fCode":"0404",
"fTrunk":"ACCESS 2010六大對(duì)象不可以( ?。?。",
"fChoiceA":"A.刪除",
"fChoiceB":"B.隱藏",
"fChoiceC":"C.創(chuàng)建",
"fChoiceD":"D.創(chuàng)建快捷方式",
"fAnswer":"D"
},
............
]
多選題文件結(jié)構(gòu)類(lèi)似于:
[
{"fCode":"0401",
"fTrunk":"數(shù)據(jù)庫(kù)管理系統(tǒng)主要包含以下功能( ?。?,
"fChoiceA":"A.數(shù)據(jù)定義",
"fChoiceB":"B.數(shù)據(jù)操縱",
"fChoiceC":"C.數(shù)據(jù)庫(kù)運(yùn)行管理",
"fChoiceD":"D.數(shù)據(jù)庫(kù)建立和維護(hù)",
"fChoiceE":"E.數(shù)據(jù)通信功能",
"fAnswer":"ABCDE"
},
{"fCode":"0402",
"fTrunk":"數(shù)據(jù)庫(kù)管理系統(tǒng)的簡(jiǎn)稱(chēng)是( ?。?,
"fChoiceA":"A.DB",
"fChoiceB":"B.DBMS",
"fChoiceC":"C.ORDBS",
"fChoiceD":"D.RDBS",
"fChoiceE":"E.DDL",
"fAnswer":"B"
},
{"fCode":"0403",
"fTrunk":"關(guān)系是具有如下特征的二維表( ?。?。",
"fChoiceA":"A.行存儲(chǔ)實(shí)體數(shù)據(jù)",
"fChoiceB":"B.列存儲(chǔ)實(shí)體屬性",
"fChoiceC":"C.每列具有唯一名稱(chēng)且數(shù)據(jù)類(lèi)型一致",
"fChoiceD":"D.列的順序任意,行的順序也任意",
"fChoiceE":"E.任意兩行內(nèi)容不能完全重復(fù)",
"fAnswer":"ABCDE"
},
{"fCode":"0404",
"fTrunk":"ACCESS 2010六大對(duì)象包括( ?。?。",
"fChoiceA":"A.表",
"fChoiceB":"B.查詢(xún)",
"fChoiceC":"C.窗體",
"fChoiceD":"D.宏",
"fChoiceE":"E.模塊",
"fAnswer":"ABCDE"
},
{"fCode":"0405",
"fTrunk":"ACCESS 2010中查詢(xún)分為兩大類(lèi)型,它們是( )。",
"fChoiceA":"A.選擇查詢(xún)",
"fChoiceB":"B.刪除查詢(xún)",
"fChoiceC":"C.操作查詢(xún)",
"fChoiceD":"D.生成表查詢(xún)",
"fChoiceE":"E.SQL查詢(xún)",
"fAnswer":"AC"
}
]
加載上述試題內(nèi)容的方式官方DEMO中大量提供類(lèi)似代碼,直接使用即可(下面是我加載單選內(nèi)容的代碼):
Model.prototype.singleDataCustomRefresh = function(event){
var singleData = event.source;
$.ajax({
type: "GET",
url: require.toUrl('./json/singleData.json'),
dataType: 'json',
async: false,
cache: false,
success: function(data){
singleData.loadData(data);//將返回的數(shù)據(jù)加載到data組件
},
error: function(){
throw justep.Error.create("加載數(shù)據(jù)失敗");
}
});
};
至于設(shè)置單選題對(duì)應(yīng)數(shù)據(jù)組件singleData的limit等屬性小問(wèn)題及radio和radioGroup組件的常見(jiàn)屬性設(shè)置在此小不贅述了(我使用的是radioGroup組件設(shè)計(jì)單選題界面)。
真正的問(wèn)題
可能受到以前UI設(shè)計(jì)思路的影響,很可能大家的問(wèn)題都集中在前面列舉的問(wèn)題1上,即“l(fā)ist組件的onClick 事件中 如何得到 list某一行的id”。但是,看X5的UI組件設(shè)計(jì)思想,這種想法本身可以理解,但是在X5 UI編程中是不能考慮的(即它無(wú)法支持)。
例如,無(wú)論在官方‘文檔中心’的list組件介紹或者‘如何主動(dòng)定位到行’(http://bbs.wex5.com/forum.php?mod=viewthread&tid=117208&highlight=list%E7%BB%84%E4%BB%B6)帖子中,都提供類(lèi)似于這樣的描述:
“
數(shù)據(jù)再多也是遍歷!
wex5開(kāi)發(fā)項(xiàng)目,準(zhǔn)守的一個(gè)原則就是面向數(shù)據(jù)變成,面向data組件編程!
頁(yè)面一切操作都是直接操作數(shù)據(jù)組件的!”
如果上面這個(gè)問(wèn)題1解決了,那么其他相應(yīng)問(wèn)題便迎刃而解!不知官方權(quán)威開(kāi)發(fā)朋友對(duì)此是如何解釋的(因?yàn)槟莻€(gè)‘文檔中心’的問(wèn)題貴方并沒(méi)有給予解釋?zhuān)?/p>
我遇到的一個(gè)具體問(wèn)題
在上面以單選題為代表的設(shè)計(jì)下,我很自然地想到了radioGroup的onChanged事件,于是添加了如下代碼:
Model.prototype.radioGroupSingleChange = function(event){
var crow = this.comp('singleData').getCurrentRow();//start from 0
//var id1 = this.comp('singleData').getRowID(crow);
console.log('Current row index: '+" "+crow.index());
//var context=event.bindingContext;
//var span1=this.comp('outputSingle');
//console.log("No: "+span1.innerText);
//debugger;
var data=this.comp('singleData');
var v = data.getValue('fCode');
console.log("fCode: "+v);
//get question seqCode
var i=data.val("fCode").substring(3);
//怎么總是輸出相同的第1題,選擇A
//store the user select
console.log('第'+i+'題');
//獲取radioGroup的值
var val = this.comp("radioGroupSingle").val();
console.log('select: '+val);
//data.next();
//var confirmRefresh = data.confirmRefresh;
//強(qiáng)制刷新數(shù)據(jù)
//data.refreshData();
// try{
// data.confirmRefresh = false;
// data.refreshData();
// }finally{
// data.confirmRefresh = confirmRefresh;
// }
//data.refresh();
};
上面的注釋內(nèi)容我添加了又刪除,刪除了又添加,反復(fù)試驗(yàn)多次,結(jié)果只有一個(gè):并不輸出當(dāng)前題號(hào),即只是顯示list中第一項(xiàng),即數(shù)據(jù)組件第一行中對(duì)應(yīng)內(nèi)容!
一種勉強(qiáng)的解決辦法
一下找不到那個(gè)帖子了,他是在每一個(gè)界面中只顯示一個(gè)題(無(wú)論是單選還是多選),然后下面放置類(lèi)似于‘第一個(gè)’‘下一個(gè)’‘最后一個(gè)’‘最開(kāi)始’等常見(jiàn)導(dǎo)航按鈕,這樣設(shè)置界面的話(huà)問(wèn)題簡(jiǎn)單得多了,即使用類(lèi)似于上面的radioGroup的onChanged事件中,調(diào)用數(shù)據(jù)組件的next,prev等方法即可實(shí)現(xiàn)每一小題的實(shí)時(shí)定位。這種方案容易多了!
但是,想一下,如今的智能手機(jī)屏幕越來(lái)越大,不考慮使用scrollView與list組件(其中放置每道試題相關(guān)內(nèi)容)結(jié)合,每一頁(yè)中顯示N道題,顯然是不友好的設(shè)計(jì)。即上述設(shè)計(jì)方案存在片面性,而不是更為一般的方案。
我目前想到的針對(duì)我的上面設(shè)計(jì)的另一種尚未試驗(yàn)的方案是,在DATA組件設(shè)計(jì)中,再添加一個(gè)答案列。上面的fAnswer這一列對(duì)應(yīng)于正確的標(biāo)準(zhǔn)答案,可以再添加一個(gè)用戶(hù)本人選擇答案的存儲(chǔ)列,例如稱(chēng)為fUserAnswer。我們不去考慮類(lèi)似于上面onChanged事件中準(zhǔn)確定位每一題的題號(hào)的問(wèn)題,而只是關(guān)注用戶(hù)做題結(jié)束后通過(guò)對(duì)應(yīng)上面的兩個(gè)列,讓用戶(hù)知道他做對(duì)了哪些?做錯(cuò)了哪些即可。另外,有了上面的即時(shí)提示按鈕,他當(dāng)時(shí)做第X小題的正確與否情況問(wèn)題也解決了。不知各位看法如何?
我抓緊試驗(yàn)一下,結(jié)果將會(huì)一并提交于下面。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站標(biāo)題:WeX5客觀題軟件開(kāi)發(fā)與list組件應(yīng)用等典型疑問(wèn)-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://aaarwkj.com/article40/jsgho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站設(shè)計(jì)、定制網(wǎng)站、網(wǎng)站改版、網(wǎng)站策劃、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容