ionic1 v1 開發(fā)小經(jīng)驗 小方法

基于ionic1.7.16 & cordova 6.3.1

對應(yīng)的ionic cli版本官方參考文檔可以自己查找到
在npm安裝的目錄下ionic/README.md
C:\Users\Administrator\AppData\Roaming\npm\node_modules\ionic\README.md


發(fā)布簽名版本

  • 1.生成未簽名版的apk -> android-release-unsigned.apk
ionic build --release android
  • 2.生成簽名文件 myapp.keystore
cd platforms\android\build\outputs\apk

keytool -genkey -v -keystore myapp.keystore -alias myapp.keystore -keyalg RSA -validity 20000

填寫信息即可
  • 3.使用簽名文件給未簽名的apk簽名
    myapp.keystore&生成未簽名版的apk -> 生成簽名的api
jarsigner -verbose -keystore myapp.keystore -signedjar android-release.apk android-release-unsigned.apk myapp.keystore
獲取MD5簽名

查看簽名的MD5 (解壓android-release.apk 取出META-INF 下的.RSA文件)

keytool -printcert -file MYAPP.RSA

證書指紋:
MD5: 6B:2B:83:81:18:E3:......
md5 小寫 6b2b838118e3.....(秘鑰需要轉(zhuǎn)成小寫去":",做微信cordova插件功能時需要配置)


自定義ionic默認(rèn)css樣式

安裝編譯scss所需依賴
npm install

ionic會添加gulp-sass等gulp插件
ionic setup sass

啟動的時候會增加gulp任務(wù),sass和watch
ionic serve

修改lib\ionic\scss_variables.scss
$calm: #11c1f3 !default;
再修改myapp/scss/ionic.app.scss
$calm: #11c1f3 !default;
----- save ok------
sass代碼構(gòu)建過程 參考作者:大貓Calvin

順便擴(kuò)展gulp任務(wù) 自定義style.scss

gulp.task('sass', function(done) {
// 再添加一個style.scss的配置
});

  gulp.src('./scss/style.scss')
    .pipe(sass())
    .on('error', sass.logError)
    .pipe(gulp.dest('./www/css/'))
    .pipe(cleanCss({
      keepSpecialComments: 0
    }))
    .pipe(rename({ extname: '.min.css' }))
    .pipe(gulp.dest('./www/css/'))
    .on('end', done);

自定義tabs 圖標(biāo)

以css background-image的方式實現(xiàn)

<ion-tabs class="tabs-icon-top tabs-color-active-calm">

  <ion-tab title="首頁" icon-off="cc_tab_pic cc_tab_off_1" icon-on="cc_tab_pic cc_tab_on_1" href="#/tab/home" style="">
    <ion-nav-view name="tab-home"></ion-nav-view>
  </ion-tab>

  <ion-tab title="向?qū)? icon-off="cc_tab_pic cc_tab_off_2" icon-on="cc_tab_pic cc_tab_on_2" href="#/tab/guide">
    <ion-nav-view name="tab-guide"></ion-nav-view>
  </ion-tab>

  <ion-tab title="我的" icon-off="cc_tab_pic cc_tab_off_3" icon-on="cc_tab_pic cc_tab_on_3" href="#/tab/user">
    <ion-nav-view name="tab-user"></ion-nav-view>
  </ion-tab>

</ion-tabs>
// tabs
.cc_tab_pic {
  background-size: 20px;
  background-repeat: no-repeat;
  background-position: center;
  &.cc_tab_off_1 {
    background-image: url(../img/tabs/1.png);
  }
  &.cc_tab_on_1 {
    background-image: url(../img/tabs/2.png);
  }
  &.cc_tab_off_2 {
    background-image: url(../img/tabs/3.png);
  }
  &.cc_tab_on_2 {
    background-image: url(../img/tabs/4.png);
  }
  &.cc_tab_off_3 {
    background-image: url(../img/tabs/5.png);
  }
  &.cc_tab_on_3 {
    background-image: url(../img/tabs/6.png);
  }
}

登陸的做法

你要是愿意的話,可以在每個需要登錄的頁面中做未登錄情況的處理,比如展示一些默認(rèn)背景圖片余寥,登錄提示等等舵盈,又由于ionic的路由會緩存曾經(jīng)訪問過的頁面卿泽,所以當(dāng)你登錄成功后赃梧,需要去刷新這些被緩存的頁面「逭蓿可以使用如下代碼
javascript 代碼效果預(yù)覽

1.每次進(jìn)入頁面前判斷是否登錄

$scope.$on("$ionicView.beforeEnter",function(){//每次進(jìn)入頁面前判斷是否登錄
        //判斷登錄代碼
    });

監(jiān)聽頁面進(jìn)入事件,每次頁面進(jìn)入都判斷當(dāng)前是否已登錄气忠,來判斷是否加載數(shù)據(jù)邻储「逞剩或者用$ionicHistory.clearCache() 直接清除所有緩存。

2.每次進(jìn)入頁面前判斷是否登錄

最方便簡單的方法芥备,在.run 或者 .config 中監(jiān)聽state的變更事件冬耿,也就是在路由去加載每個頁面之前就判斷登錄狀態(tài),來決定要不要加載該頁面萌壳,還是跳轉(zhuǎn)到登錄頁去亦镶。
javascript 代碼效果預(yù)覽

.run(function($ionicPlatform, $rootScope, $ionicHistory,$state) {
    var needLoginView = ["myclass","mycomment","myfavorite","myquestion","orderlist"];//需要登錄的頁面state
    $rootScope.$on('$stateChangeStart',function(event, toState, toParams, fromState, fromParams, options){ 
        if(needLoginView.indexOf(toState.name)>=0&&!$rootScope.isLogin){//判斷當(dāng)前是否登錄
            $state.go("login");//跳轉(zhuǎn)到登錄頁
            event.preventDefault(); //阻止默認(rèn)事件,即原本頁面的加載
        }
    })});

這樣只需要把所有需要登錄的頁面state名寫入needLoginView 數(shù)組中袱瓮,每次切換頁面缤骨,就會自動判斷是否要跳轉(zhuǎn)到登錄頁面,并且登錄頁返回直接到當(dāng)前頁尺借,減少很多麻煩绊起。


$ionicModal 向左css動畫 & 返回關(guān)閉Modal

官方的modal只有向上(slide-in-up)的動畫
所以自己添加一個向左的slide-in-left

// ionic model ----增加slide-in-right 動畫效果
.slide-in-right {
    -webkit-transform: translateX(-100%);
    transform: translateX(100%);
}
.slide-in-right.ng-enter,.slide-in-right > .ng-enter {
    -webkit-transition: all cubic-bezier(0.1, 0.7, 0.1, 1) 400ms;
    transition: all cubic-bezier(0.1, 0.7, 0.1, 1) 400ms;
}
.slide-in-right.ng-enter-active,.slide-in-right > .ng-enter-active {
    -webkit-transform: translateX(0);
    transform: translateX(0);
}
.slide-in-right.ng-leave,.slide-in-right > .ng-leave {
    -webkit-transition: all ease-in-out 250ms;
    transition: all ease-in-out 250ms;
}
.slide-in-left {
    -webkit-transform: translateX(-100%);
    transform: translateX(100%);
}
.slide-in-left.ng-enter,.slide-in-left > .ng-enter {
    -webkit-transition: all cubic-bezier(0.1, 0.7, 0.1, 1) 400ms;
    transition: all cubic-bezier(0.1, 0.7, 0.1, 1) 400ms;
}
.slide-in-left.ng-enter-active,.slide-in-left > .ng-enter-active {
    -webkit-transform: translateX(0);
    transform: translateX(0);
}
.slide-in-left.ng-leave,.slide-in-left > .ng-leave {
    -webkit-transition: all ease-in-out 250ms;
    transition: all ease-in-out 250ms;
}
$ionicModal.fromTemplateUrl('my-modal.html', {
    scope: $scope,
    animation: 'slide-in-left'
  }).then(function(modal) {
    $scope.modal = modal;
  });

如果用戶進(jìn)入Model頁面后 點(diǎn)擊了返回按鈕 這是需要關(guān)閉Model

    //監(jiān)聽離開頁面時關(guān)閉modal
    $scope.$on("$ionicParentView.beforeLeave", function() {
        console.info("yourPageCtrl--$ionicView.beforeLeave ");
        $scope.modal.hide();
    });

$http 請求格式問題

如果服務(wù)器拿不到請求的數(shù)據(jù) 應(yīng)該是格式不對
配置$http參數(shù),以表單形式 提交數(shù)據(jù)

var app = angular.module('myApp');
app.config(function ($httpProvider) {
    // 配置$http請求
    // 以表單形式 提交數(shù)據(jù)
    $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
    $httpProvider.defaults.transformRequest = function(data) {
      if (data === undefined) return data;
      return $.param(data);
    };
});

阻止事件冒泡

元素的父元素也有點(diǎn)擊事件 點(diǎn)擊子元素后子元素事件執(zhí)行完父元素事件也執(zhí)行了

<div ng-click="gohome()" >
    <button ng-click="myalert('gg');$event.stopPropagation();">呵呵</button>
</div>

ionic使用iframe時在iOS上無法顯示網(wǎng)頁問題處理

近期在ionic項目中使用了iframe標(biāo)簽使用src屬性展示一個網(wǎng)頁,在Android設(shè)備上運(yùn)行完全正常.
但是在iOS模擬器上去運(yùn)行時卻不顯示網(wǎng)頁.經(jīng)查閱資料發(fā)現(xiàn)以下處理方法

  • 在ionic項目根目錄下,打開config.xml文件,在<access origin="" />后添加<allow-navigation href="" />即可
<allow-navigation href="*" />

ionic禁止手機(jī)自動旋轉(zhuǎn)下橫屏

1.安裝cordova插件
ionic plugin add cordova-plugin-screen-orientation

2.添加屏幕配置(Config.xml文件)
<preference name="orientation" value="portrait" />
  • orientation設(shè)置可以讓你鎖定應(yīng)用程序屏幕方向以阻止屏幕自動翻轉(zhuǎn)燎斩∈幔可選的值有:default,landscape(橫屏)栅表,portrait(豎屏)笋鄙。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市怪瓶,隨后出現(xiàn)的幾起案子萧落,更是在濱河造成了極大的恐慌,老刑警劉巖洗贰,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件找岖,死亡現(xiàn)場離奇詭異,居然都是意外死亡敛滋,警方通過查閱死者的電腦和手機(jī)许布,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來矛缨,“玉大人爹脾,你說我怎么就攤上這事』眩” “怎么了灵妨?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長落竹。 經(jīng)常有香客問我泌霍,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任朱转,我火速辦了婚禮蟹地,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘藤为。我一直安慰自己怪与,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布缅疟。 她就那樣靜靜地躺著分别,像睡著了一般。 火紅的嫁衣襯著肌膚如雪存淫。 梳的紋絲不亂的頭發(fā)上耘斩,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機(jī)與錄音桅咆,去河邊找鬼括授。 笑死,一個胖子當(dāng)著我的面吹牛岩饼,可吹牛的內(nèi)容都是我干的荚虚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼籍茧,長吁一口氣:“原來是場噩夢啊……” “哼曲管!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起硕糊,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎腊徙,沒想到半個月后简十,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撬腾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年螟蝙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片民傻。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡胰默,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出漓踢,到底是詐尸還是另有隱情牵署,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布喧半,位于F島的核電站奴迅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挺据。R本人自食惡果不足惜取具,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一脖隶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧暇检,春花似錦产阱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至榨乎,卻和暖如春怎燥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蜜暑。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工铐姚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肛捍。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓隐绵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拙毫。 傳聞我的和親對象是個殘疾皇子依许,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 在現(xiàn)在的前端開發(fā)中,前后端分離缀蹄、模塊化開發(fā)峭跳、版本控制、文件合并與壓縮缺前、mock數(shù)據(jù)等等一些原本后端的思想開始...
    Charlot閱讀 5,440評論 1 32
  • 1.SASS (1)概念:sass是一個css的預(yù)處理器蛀醉,是css的超集;這意味著你可以定期寫CSS和Sass了解...
    lengyan_zhao閱讀 288評論 0 0
  • 原文標(biāo)題:Gulp for Beginners作者: Zell Liew翻譯:治電小白菜原文地址:https://...
    ZZES_ZCDC閱讀 1,583評論 6 18
  • 安裝Gulp首先需要安裝Node.js衅码,并在控制臺輸入$ npm install gulp -gMac端需要寫成$...
    LaBaby_閱讀 920評論 0 1
  • (最近一直搞angularjs.項目里非要用2個包管理器npm和bower拯刁,2個任務(wù)運(yùn)行器webpage、gulp...
    Lucky_福星閱讀 661評論 1 2