1. tac深坑 交掏,tac根據(jù)當(dāng)前 寬度刃鳄,進(jìn)行文本的自適應(yīng)水平居中叔锐,但是在移動(dòng)端,屏幕大小變化的讨盒,無(wú)法同步自適應(yīng)步责。導(dǎo)致文字劇中蔓肯,解決方法,div包裹秉扑,文本调限,轉(zhuǎn)化為div在div中水平耻矮,垂直劇中即可在瀏覽器環(huán)境下,window.onresize事件中宦赠,可以動(dòng)態(tài)添加div行內(nèi)屬性米母,textAlign='center'.
2. 利用jq的序列化方法serializeArray 铁瞒,封裝了一個(gè)serializeObject方法,并重新掛在jQuery.prototype上身辨。
3. 入口文件index.html 首先應(yīng)該判斷是否登陸芍碧,如果登陸泌豆,在初始化頁(yè)面,打開(kāi)首頁(yè)main.html對(duì)應(yīng)的頁(yè)面蔬浙,如果沒(méi)有登陸就應(yīng)該顯示login.html對(duì)應(yīng)的頁(yè)面贞远,配合localStorage進(jìn)行驗(yàn)證 這里如果要用到token會(huì)好一些蓝仲,可以在登錄時(shí),給后臺(tái)發(fā)送token亮隙,判斷token是否過(guò)期擎勘。更好的控制登錄棚饵。
4. apicloud中5大ui 組件之間的關(guān)系是, app>(啟動(dòng)頁(yè))>widget(一個(gè)或者多個(gè)項(xiàng)目包)>window(每一個(gè)項(xiàng)目包對(duì)應(yīng)默認(rèn)打開(kāi)一個(gè)window)>frame/frameGroup的關(guān)系硼砰,最開(kāi)始打開(kāi)應(yīng)用的時(shí)候默認(rèn)打開(kāi)的文件就是一個(gè)window 题翰。基本是window+frame的布局方式在子frame會(huì)依賴(lài)在父frame上冯事。
5 在apicloud中血公,盡量使用padding去設(shè)置,大的木塊如header摔笤,main邊距吕世,否則梯投,會(huì)增高#wrap的高度晚伙,高出一個(gè)api.frameHeight的高度就會(huì)出現(xiàn)留白。
6 在apiready中才能夠訪問(wèn)到api漓帚,引入外部ui組件的時(shí)候午磁,需要?jiǎng)?chuàng)建實(shí)例迅皇,實(shí)例的回調(diào)需要用到api方法昧辽,如openframe時(shí)應(yīng)該把實(shí)例定義apiready中,其實(shí)即 ‘’ ‘’實(shí)際上也就掛載在api上登颓,$api也能夠訪問(wèn)搅荞。也可以把window.apiread掛載window上把ui對(duì)象實(shí)例化對(duì)象也掛載window上。
7 tapmode屬性框咙,解決300毫秒延遲
8 頁(yè)面之間反向傳值咕痛,可以在下一個(gè)頁(yè)面frame定義一個(gè)api.sendEvent({})name 定義事件名稱(chēng), extra 傳遞參數(shù)喇嘱,在監(jiān)聽(tīng)事件addEventListener時(shí)茉贡,回調(diào)函數(shù)function(ret,err) 分部獲取參數(shù)者铜,和報(bào)錯(cuò)放椰。傳遞參數(shù)有一個(gè)小坑,出現(xiàn)2中取值情況愉粤。ret.value.key 或者ret.value.key.index 暫時(shí)不明白機(jī)制砾医,做了兼容性處理。
9 布局中科汗,將main部分當(dāng)做是新的frame打開(kāi)區(qū)域藻烤,打開(kāi)main是在原來(lái)frame的情形下打開(kāi)的绷雏,仍然會(huì)占據(jù)位置如果需要底部的tabbar头滔,并不能用定位定到底部。
10 實(shí)現(xiàn)底部按鈕的時(shí)候涎显,不能夠直接定位到底部坤检,app里面是不支持的,一般需要兩端去頭去尾期吓,開(kāi)辟一個(gè)frame空間早歇,設(shè)置高度之后,能夠讓底部botton站在底部位置讨勤。但是如果中間不需要新的frame的時(shí)候就不能夠很好的讓botton箭跳,居于底部這里直接,在打開(kāi)window的時(shí)候就在底部打開(kāi)一個(gè)frame只用來(lái)裝botton.html這樣的話(huà)就能夠?qū)崿F(xiàn)了潭千。
11 鍵盤(pán)彈出時(shí)谱姓, 蓋住輸入框。 ios可以監(jiān)聽(tīng)事件keybordshow刨晴,回到中ret.h表示是鍵盤(pán)的高度屉来,通過(guò)判斷,輸入框的高度狈癞,來(lái)進(jìn)行判斷是否需要操作頁(yè)面茄靠。
12 常識(shí): apicloud中想要去操作dom,外面去獲取蝶桶,apiready中不一定能拿到dom出現(xiàn)問(wèn)題 慨绳,時(shí)機(jī)可能是不對(duì)的
13 使用api.bringFrameFont 方法是需要frame先打開(kāi)的。為了節(jié)省資源真竖,我判斷了是否打開(kāi)脐雪。如果沒(méi)打開(kāi),則openFrame疼邀,如果已經(jīng)打開(kāi)了喂江,選擇api.bringFrameFont ,判斷依據(jù)比較拙劣旁振,使用的是var frames = api.frames()返回一個(gè)包含已打開(kāi)frame名的的動(dòng)態(tài)數(shù)組获询。數(shù)組包含對(duì)像{ name: }的形式涨岁。使用了filter篩選出的名稱(chēng)相等的數(shù)組,進(jìn)行了長(zhǎng)度判斷吉嚣。比較劣質(zhì)梢薪,歡迎討論
14 關(guān)于api.bringFrameFont另外一個(gè)坑。不能夠操作FrameGroup中的frame尝哆,通過(guò)frameGroup中的frame出現(xiàn)的形式秉撇,應(yīng)該是左右排列的所有不太生效。
15 小技巧秋泄,如果在操作按鈕時(shí)琐馆,如果不想去操作dom注冊(cè)事件,可以定義事件恒序,然后再行內(nèi)式注冊(cè)事件瘦麸,免去操作dom的麻煩。
16 header部分歧胁,因?yàn)樾枰猼itle居中顯示滋饲,通過(guò)會(huì)用到自覺(jué)父相的定位,導(dǎo)致back后退圖片喊巍,在底下無(wú)法點(diǎn)到屠缭。記得給后退圖標(biāo)的元素,加相對(duì)定位崭参!這就是為什么呵曹,無(wú)法調(diào)用api.closeWin關(guān)閉窗口的原因。
17 在使用api.execScript方法時(shí)阵翎,需要注意的是逢并,當(dāng)參數(shù)數(shù)據(jù)為復(fù)雜數(shù)據(jù)類(lèi)型時(shí),如果不轉(zhuǎn)化為jSON類(lèi)型的話(huà)郭卫,會(huì)報(bào)語(yǔ)法錯(cuò)誤砍聊。其用法類(lèi)似于JSONP,通過(guò)調(diào)用函數(shù)贰军,實(shí)參傳遞給形參得方式玻蝌,在另外一個(gè)頁(yè)面拿到當(dāng)前頁(yè)面的數(shù)據(jù)。注意词疼,外層引號(hào)為單引俯树,避免與JSON數(shù)據(jù)類(lèi)型雙引號(hào)沖突。
18? apicloud打包IOS和Android 是有兼容性問(wèn)題的贰盗,對(duì)于鍵盤(pán) 彈起判斷的api只能夠在config.xml文件中配置许饿,并且無(wú)法作用于安卓,安卓可以自適應(yīng)舵盈。且重點(diǎn)來(lái)了z-index 屬性陋率,在 蘋(píng)果中如果使用負(fù)值球化,IOS是不支持的。Android的absolute 在IOS中如果父元素使用了flex布局瓦糟,也是無(wú)效的筒愚。
18 移除外部引入css樣式中默認(rèn)設(shè)置的偽元素樣式,可以通過(guò)偽元素diaplay :none菩浙;進(jìn)行覆蓋移除
19 frameGroup 中的坑非常多巢掺, 首先f(wàn)rameGroup整體應(yīng)該是相當(dāng)于 一個(gè)win ,依附在上面的frames能夠正常的切換劲蜻,且不互相遮蓋陆淀,需要win的的模塊,比如就是這個(gè)坑爹的arcmenu 就是斋竞,依然能夠正常顯示倔约,但是在每一個(gè)frame中再次打開(kāi)frame時(shí),就會(huì)出現(xiàn)層疊情況坝初。所以,應(yīng)該避免钾军。
20 setFrameGroupIndex 需要事件是一個(gè)異步過(guò)程 鳄袍,頁(yè)面呈現(xiàn)之后,類(lèi)似于打開(kāi)的frameGroup的頁(yè)面才能接受到監(jiān)聽(tīng)的機(jī)制會(huì)有一個(gè)時(shí)間上的吏恭,變差拗小。在完成之前,如果關(guān)閉當(dāng)前頁(yè)面跳轉(zhuǎn)到樱哼,制定index的頁(yè)面哀九,由于頁(yè)面關(guān)閉比回調(diào)快,會(huì)出現(xiàn)設(shè)置index無(wú)效的情況搅幅。因此阅束,可以以后在回調(diào)中,監(jiān)聽(tīng)茄唐,如果完成index的切換息裸,再進(jìn)行關(guān)閉跳轉(zhuǎn)操作。
21 關(guān)閉某個(gè)win 和當(dāng)前win之間的所有win 沪编,跳轉(zhuǎn)到某個(gè)win的時(shí)候呼盆,用api.closeToWin()
22 用doT模板的是后,如果在循環(huán)數(shù)組中蚁廓,判斷條件是表達(dá)式访圃,那么已經(jīng)把表達(dá)式括號(hào)包起來(lái),否則天坑O嗲丁M仁薄克胳!實(shí)際測(cè)試并不用包裹,起來(lái)圈匆,但是不能夠使用&& 語(yǔ)法漠另,進(jìn)行多條件的判斷,而且分嵌套判斷也是必須經(jīng)的跃赚,已經(jīng)會(huì)造成語(yǔ)法編譯的混亂笆搓。 目前處理方法是手動(dòng),提前改變數(shù)據(jù)
23 簡(jiǎn)單數(shù)據(jù)類(lèi)型纬傲,字符串類(lèi)型满败,是可以直接通過(guò)$api.getStorage('等等') 是可以獲取到的,單是復(fù)雜的數(shù)據(jù)類(lèi)型叹括,還是的JSON.parse算墨,目前集成的說(shuō)法,正確的理解汁雷,應(yīng)該是净嘀,已經(jīng)封裝的storgae可以直接存儲(chǔ)對(duì)象等,那么久在存儲(chǔ)的時(shí)候避免是用stringify進(jìn)行轉(zhuǎn)化-------------先驗(yàn)證 - ---------------- 驗(yàn)證結(jié)果:驗(yàn)證成功侠讯,直接進(jìn)行存儲(chǔ)記得挖藏,如果存儲(chǔ)的時(shí)候使用了stringify進(jìn)行,存儲(chǔ)在獲取的時(shí)候就必須進(jìn)行JSON.parse() 的轉(zhuǎn)化厢漩。
24 如果表示 變量數(shù)據(jù)類(lèi)型為{ } 一個(gè)空的對(duì)象膜眠,那么出現(xiàn)一個(gè)問(wèn)題。如果判斷if(data == {}) 的時(shí)候溜嗜,改條件是不成立的,
最好判斷其屬性炸宵。
25 關(guān)于網(wǎng)絡(luò)問(wèn)題,利用你conectionType進(jìn)行判斷焙压,細(xì)分為2g,3g,4g,無(wú)網(wǎng)絡(luò),以太網(wǎng)等等涯曲,由此判斷野哭,連接網(wǎng)絡(luò)的類(lèi)型,而且網(wǎng)絡(luò)監(jiān)聽(tīng)拨黔,只在網(wǎng)絡(luò)連接環(huán)境發(fā)生變化的時(shí)候才能夠觸發(fā)。
26 獲取偏好設(shè)置成同步獲取就好了篱蝇,apicloud中贺待,異步獲取,添加自己的操作難度零截。
27 因?yàn)閒rameGroup特殊的緩存機(jī)制麸塞,在apicloud中,如果使用的是哪工,注冊(cè)點(diǎn)擊事件進(jìn)行的點(diǎn)擊跳轉(zhuǎn)弧哎。如果在framegroup中其他頁(yè)面雁比,跳轉(zhuǎn)到新的win時(shí)撤嫩,frameGroup中的其他方法不會(huì)執(zhí)行。因此點(diǎn)擊事件不會(huì)被注冊(cè)茴她。
28 apicloud 打包的Android app ,打開(kāi)frame頁(yè)面時(shí)败京,配置rect時(shí)(窗口的大小位置描述)梦染,發(fā)現(xiàn),‘a(chǎn)uto’的寬度帕识,約有15px的右邊留白遂铡。目前不知道具體原因。詳細(xì)描述一下問(wèn)題扒接,即openFrame的時(shí)候,設(shè)置rect: { w:'auto' }(其他配置省略描述)時(shí)钾怔,在新frame中,設(shè)置div寬度為100%愚臀,不能夠充滿(mǎn)通欄矾利。右側(cè)有約15px的留白馋袜,目前比拙劣的使用了,api.frameWidth+15進(jìn)行了通欄操作舶斧,但是,div右側(cè)會(huì)有15px進(jìn)入到右邊向左滑動(dòng)才會(huì)出現(xiàn)的間隙留白茴厉。因此給了右邊一個(gè)15px的內(nèi)邊距padding解決了。(非常想說(shuō)是15公分)师痕,不知道是否是常見(jiàn)問(wèn)題,apicloud社區(qū)沒(méi)有搜到相關(guān)問(wèn)題有知道的大佬胰坟,煩請(qǐng)告知泞辐。