由于瀏覽器都有同源加載策略琼稻,不能加載不同域下的文件、也不能使用不合要求的協(xié)議比如file進(jìn)行訪問绞吁。
在angularJs中為了避免安全漏洞朦前,一些ng-src或者ng-include都會(huì)進(jìn)行安全校驗(yàn),因此常常會(huì)遇到一個(gè)iframe中的ng-src無法使用褥符。
在angular中使用iframe時(shí)龙誊,iframe的ng-src屬性中的url地址需要用angular中的$sce服務(wù)(即strict contextual escaping)把一些地址變成安全的、授權(quán)的鏈接喷楣。
常用的方法有:
$sce.trustAs(type,name);
$sce.trustAsHtml(value);
$sce.trustAsUrl(value);
$sce.trustAsResourceUrl(value);
$sce.trustAsJs(value);
ionic周期函數(shù)以及回調(diào)函數(shù)
1.$ ionicView.loaded? 視圖已經(jīng)被加載了趟大,這個(gè)事件只發(fā)生一次,視圖被創(chuàng)建并且被添加到DOM中铣焊,當(dāng)視圖跳出后并被緩存的話逊朽,再次訪問這個(gè)視圖這個(gè)事件將不會(huì)被激活。Loaded事件是個(gè)好方式讓你為這個(gè)視圖設(shè)置你的代碼曲伊; 然而叽讳,他并不是我們推薦的事件去監(jiān)聽視圖被激活。
2.$ ionicView.enter? 進(jìn)入視圖并被激活。這事件被激活來判斷這個(gè)視圖是第一個(gè)加載還是被緩存了的岛蚤。
3.$ ionicView.leave 離開這個(gè)視圖并且不是活動(dòng)頁(yè)面邑狸。調(diào)用這個(gè)事件判斷應(yīng)該被緩存還是摧毀。
4.$ionicView.beforeEnter? 視圖是即將進(jìn)入并成為活動(dòng)視圖涤妒。
5.$ionicView.beforeLeave 視圖將被關(guān)閉并且不是活動(dòng)頁(yè)面单雾。
6.$ionicView.afterEnter 進(jìn)入視圖并是當(dāng)前的活動(dòng)頁(yè)面
7.$ionicView.afterLeave 已經(jīng)離開視圖,并成為非激活頁(yè)面
8.$ionicView.unloaded 視圖的Controller已經(jīng)被摧毀并且他的頁(yè)面元素也從Dom中移除
周期函數(shù)的回調(diào)函數(shù)還可以判斷當(dāng)前視圖是進(jìn)入的還是返回回來的她紫,舉個(gè)栗子:
$scope.$on('$ionicView.beforeEnter', function (e,v) {
? if(v.direction=='back'){
? ? return;
? }
上面的e表示時(shí)間對(duì)象铁坎,v則是ionic周期函數(shù)的回調(diào)函數(shù)的參數(shù)(我個(gè)人猜測(cè)),我打印了一下這個(gè)v
結(jié)果如下:
顯然是個(gè)對(duì)象犁苏,而我最關(guān)心的就是 direction屬性硬萍,正如上面代碼中的使用,“back”表示當(dāng)前視圖是返回回來的围详。
注意:如果你打印v.direction的話朴乖,無論是進(jìn)入的還是返回回來的都顯示back,我也不知道為什么助赞,但是你用v.direction=='back'判斷卻可以判斷是進(jìn)入還是返回回來的买羞。很詫異
angular.bind(self,fn,args)
作用:返回一個(gè)新的函數(shù),新函數(shù)的this指向self
self:新函數(shù)的上下文對(duì)象
fn:待綁定的函數(shù)
args:傳遞給新函數(shù)的參數(shù)
返回值:this指向self的新函數(shù)
注意:bind會(huì)根據(jù)你的參數(shù)類型來決定調(diào)用call或apply雹食,所以args可以是一個(gè)個(gè)數(shù)據(jù)畜普,也可以是一個(gè)數(shù)組哦。
$ionicPlatform.ready(function(){})
用在run方法里面群叶,表示設(shè)備準(zhǔn)備就緒吃挑。
$ionicConfigProvider的所有方法
views.transition(transition/string)
設(shè)置視圖之間的過渡切換效果,默認(rèn)是platform街立,可選值如下:
? ?platform: 根據(jù)平臺(tái)動(dòng)態(tài)選擇相應(yīng)的過渡效果舶衬,如果不是android或者ios,則默認(rèn)是ios.
? ?ios: iOS過渡效果.
? ?android: Android過渡效果.
? ?none: 無過渡效果.
views.maxCache(maxNumber/number)
設(shè)置DOM中緩存的最大視圖數(shù)目赎离,如果超過限制逛犹,則移除最長(zhǎng)時(shí) 間沒有顯示的視圖。DOM緩存中的視圖會(huì)緩存scope和當(dāng)前狀態(tài)以及滾動(dòng)的位置梁剔。緩存中的scope并不在 $watch 監(jiān)聽生命周期中虽画,當(dāng)視圖重新顯示的時(shí)候,會(huì)重新進(jìn)入 $watch荣病。如果 maximum cache 設(shè)置為 0, 離開的view會(huì)被立即從dom中移除, 下次再顯示這個(gè)view的時(shí)候, 就會(huì)重新編譯, 附加到dom上, 重新綁定到對(duì)應(yīng)的元素.相當(dāng)于是禁用緩存.
views.forwardCache(value/boolean)
默認(rèn)情況下码撰,最近訪問的視圖會(huì)被緩存,當(dāng)導(dǎo)航回到某個(gè)已經(jīng)訪問過 的視圖的時(shí)候众雷,相同實(shí)例的數(shù)據(jù)和dom元素會(huì)被重新引用到灸拍。然而做祝,當(dāng)回退到上一個(gè)視圖的時(shí)候砾省,剛剛前進(jìn)的視圖會(huì)被清除掉鸡岗,如果你再次前進(jìn)到這個(gè)視圖,就會(huì) 創(chuàng)建一個(gè)新的DOM節(jié)點(diǎn)元素和控制器實(shí)例编兄⌒裕基本上任何一個(gè)前進(jìn)訪問的視圖每次都會(huì)被重置。這個(gè)設(shè)置選項(xiàng)中設(shè)置為true的時(shí)候就會(huì)緩存前進(jìn)的視圖狠鸳,而且每次加載的時(shí)候不會(huì)重置揣苏。
backButton.icon(value/string)
設(shè)置返回按鈕的圖標(biāo)。
backButton.text(value/string)
設(shè)置返回按鈕的文字件舵。
backButton.previousTitleText(value/boolean)
設(shè)置是否將上一個(gè)view視圖的title設(shè)置成返回按鈕的文字卸察,iOS是默認(rèn)的true。
form.checkbox(value/string)
設(shè)置Checkbox的樣式. Android 默認(rèn)是方形square铅祸,iOS 默認(rèn)是圓形circle.
form.toggle(value/string)
設(shè)置Toggle元素的樣式. Android默認(rèn)是small坑质,iOS默認(rèn)是large.
spinner.icon(value/string)
設(shè)置默認(rèn)的spinner圖標(biāo)×俟#可以是: android, ios, ios-small, bubbles, circles, crescent, dots, lines, ripple, or spiral.
tabs.style(value/string)
設(shè)置tab的樣式涡扼。 Android 默認(rèn)是striped and iOS 默認(rèn)是standard∶伺樱可選的值是striped and standard.
tabs.position(value/string)
設(shè)置Tab的位置. Android tab的位置默認(rèn)在頂部吃沪,iOS 默認(rèn)是在底部.可選的值是 top 和 bottom.
navBar.alignTitle(value)
設(shè)置導(dǎo)航條的標(biāo)題的對(duì)其方式。 默認(rèn)是center什猖∑北耄可選值如下:
platform: 根據(jù)平臺(tái)動(dòng)態(tài)選擇標(biāo)題的樣式,ios默認(rèn)顯示為center不狮,android默認(rèn)是left抹镊,如果不是ios或android,則默認(rèn)顯示center荤傲。
left: 導(dǎo)航條標(biāo)題顯示在左邊
center: 導(dǎo)航條標(biāo)題顯示在中間
right: 導(dǎo)航條標(biāo)題顯示在右邊
navBar.positionPrimaryButtons(value/string)
設(shè)置導(dǎo)航條中主導(dǎo)航按鈕的對(duì)其位置垮耳,默認(rèn)是 left.
platform: 根據(jù)平臺(tái)動(dòng)態(tài)選擇標(biāo)題的樣式,ios默認(rèn)顯示為left遂黍,android默認(rèn)是right终佛,如果不是ios或android,則默認(rèn)顯示left雾家。
left: Left align the primary navBar buttons in the navBar
right: Right align the primary navBar buttons in the navBar.
scrolling.jsScrolling(value/boolean)
false :表示使用原聲滾動(dòng) (和在每個(gè) ion-content中設(shè)置overflow-scroll=’true’一樣的效果铃彰。)
true: 使用ionic的滾動(dòng) 即 icon-scroll
默認(rèn)情況下,啟動(dòng)頁(yè)是自動(dòng)消失的芯咧,我們完成可以自己控制啟動(dòng)頁(yè)何時(shí)消失牙捉,并加一些配置竹揍,讓啟動(dòng)頁(yè)消失的更平滑
首先,我們?cè)赾onfig.xml里面加上這幾項(xiàng)配置:
下面邪铲,我們?cè)赼pp.js里面控制啟動(dòng)頁(yè)消失:
ionic IOS 側(cè)邊滑動(dòng) 出現(xiàn)白屏的問題
ionic打包成IOS版本后會(huì)出現(xiàn)左側(cè)邊滑動(dòng)白屏的現(xiàn)象芬位,這個(gè)問題主要是由于cache導(dǎo)致的,由于IOS系統(tǒng)側(cè)邊滑動(dòng)會(huì)調(diào)用返回前一個(gè)頁(yè)面的功能带到,導(dǎo)致此問題的出現(xiàn):
具體解決方案有以下兩種方法:
1昧碉、配置ionicConfigProvider
$ionicConfigProvider.views.swipeBackEnabled(false)
2、設(shè)置ion-view
can-swipe-back=”false”