ionic入門demo
首先,引入viewport
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width" />
定義tab欄與左側滑動欄
//html
<ion-side-menus>
<ion-side-menu-content class="calm-bg">
<ion-nav-bar class="bar-positive">
<ion-nav-back-button></ion-nav-back-button>
</ion-nav-bar>
<ion-tabs class="tabs-positive tabs-icon-top">
<ion-tab title="首頁" icon-on="ion-ios-filing" icon-off="ion-ios-filing-outline" ui-sref="index">
<ion-nav-view name="view1"></ion-nav-view>
</ion-tab>
<ion-tab title="商城" icon-on="ion-ios-clock" icon-off="ion-ios-clock-outline" ui-sref="shop">
<ion-nav-view name="view2"></ion-nav-view>
</ion-tab>
<ion-tab title="個人中心" icon-on="ion-ios-gear" icon-off="ion-ios-gear-outline" ui-sref="profile">
<ion-nav-view name="view3"></ion-nav-view>
</ion-tab>
</ion-tabs>
</ion-side-menu-content>
<ion-side-menu side="left" width="150" class="balanced-bg">
左側區域
</ion-side-menu>
</ion-side-menus>
個人中心頁面顯示左側滑動效果。當進入商品詳情頁面時,隱藏底部的tabs
myApp.run(function ($rootScope, $state, $ionicTabsDelegate, $ionicHistory, $ionicSideMenuDelegate) {
//定義進入檢視時的事件$ionicView.beforEnter
$rootScope.$on('$ionicView.beforeEnter', function () {
//進入商品詳情頁隱藏底部tabs
$ionicTabsDelegate.showBar($state.current.name != 'detail');
//進入個人中心時,可以向左拉出選單 $ionicSideMenuDelegate.canDragContent($state.current.name == 'profile')
if ($state.current.name != 'detail') {
var views = {},
viewName = Object.keys($state.current.views)[0]; // 'view2'
views[viewName] = {
templateUrl: 'tplDetail',
controller: 'ctlDetail'
};
// {view2:{templateUrl: 'tplDetail', controller: 'ctlDetail'}}
$ionicHistory.clearHistory();
$state.replace('detail', {
url: '/detail/:id',
views: views
});
}
});
});
配置路由:
myApp.config(function($stateProvider){
$stateProvider.state('index',{
//首頁路由
url:'/index',
views:{
view1:{
templateUrl:"index.html",
controller:"indexCtrl"
}
}
}).state('shop',{
//商品路由
url:"/shop",
views:{
view2:{
templateUrl:"goods.html",
controller:"goodsCtrl"
}
}
}).state('profile',{
//個人中心路由
url:"/profile",
views:{
view3:{
templateUrl:"profile.html",
controller:"profileCtrl"
}
}
}).state("detail",{
//商品詳情路由,需隱藏底部tab
url:'/detail',
views:{
templateUrl:'detail.html',
controller:'detailCtrl'
}
})
配置控制器:
.controller("myController",["$scope","$state",function($scope,$state){
//進入和重新整理時,始終在進入首頁
$state.go('index')
}])
.controller("indexCtrl",["$scope","$http",function($scope,$http){
//請求商品資料,可以寫入server.js檔案中
$http.get("../api/users/gets").then(function(respon){
console.log(respon.data)
},function(error){
console.log(error)
})
//輪播圖部分,需要進行資料請求
$http.get('banner.json').success(function (result) {
$scope.banners = result;
// 等輪播圖資料都載入完之後重新整理頁面 $ionicSlideBoxDelegate._instances[0].update();
//輪播圖迴圈播放 $ionicSlideBoxDelegate.loop(true);
});
}])
.controller('ctlDetail', function ($scope, $stateParams, $http) {
//獲取id引數
var id = $stateParams.id;
$http.get('/api/users/get', {
params: {
id: id
}
}).success(function (result) {
$scope.goods = result.data;
});
})
路由檔案:
//首頁部分
<script id="tplIndex" type="text/ng-template">
<ion-view title="首頁">
<ion-content>
<ion-slide-box delegate-handle="slidebox0" auto-play="true" does-continue="true">
<ion-slide ng-repeat="item in banners">
<img ng-src="{{item}}"/>
</ion-slide>
</ion-slide-box>
<ion-list>
//給商品詳情新增id引數,已供detail頁面title的顯示
<ion-item ng-repeat="item in goods" class="item item-thumbnail-left" href="#/detail/{{item.id}}">
<img ng-src="{{item.ico}}">
<h2>{{item.name}}</h2>
<p>{{item.en_name}}</p>
</ion-item>
</ion-list>
</ion-content>
</ion-view>
</script>
//個人商城部分
<script id="tplShop" type="text/ng-template">
<ion-view title="商城">
<ion-content>
<ion-list>
<ion-item ng-repeat="item in goods" class="item item-thumbnail-left" ui-sref="detail">
<img ng-src="{{item.ico}}">
<h2>{{item.name}}</h2>
<p>{{item.en_name}}</p>
</ion-item>
</ion-list>
</ion-content>
</ion-view>
</script>
//個人中心部分
<script id="tplProfile" type="text/ng-template">
<ion-view title="個人中心">
//點選按鈕,出現左側滑動按鈕
<ion-nav-buttons side="left">
<button menu-toggle="left" class="button button-icon icon ion-navicon"></button>
</ion-nav-buttons>
<ion-content>
個人中心
</ion-content>
</ion-view>
</script>
//商品詳情部分
<script id="tplDetail" type="text/ng-template">
<ion-view>
//動態改變標題
<ion-nav-title>{{goods.name}}</ion-nav-title>
<ion-content>
{{goods.name}}
<hr />
<div>
{{goods.age}}
</div>
</ion-content>
</ion-view>
</script>
相關文章
- 【webpack】入門DemoWeb
- 手摸手帶你入門ionic3(一):ionic介紹
- Redux 入門 Demo:TodoListRedux
- FastDFS入門小DemoAST
- 【Ionic2系列】 一、入門介紹
- Dubbo的入門小Demo
- 入門Leaflet之小Demo
- Ionic2入門教程 實現TodoList App-1 初識Ionic2APP
- egg 自學入門demo分享
- FreeMarker 之快速入門Demo
- MyBatis(二)MyBatis入門程式(MyBatis demo)MyBatis
- JavaCPP快速入門(官方demo增強版)Java
- Ionic2入門教程(一)安裝和環境配置
- 手摸手帶你入門ionic3(三):新建專案
- 手摸手帶你入門ionic3(二):環境配置
- ionic的載入功能
- Java Mail 郵件傳送(一):入門DemoJavaAI
- 手摸手帶你入門ionic3(五):樣式繫結
- Dubbo官方入門Demo(翻譯自http://dubbo.io/主頁入門教程)HTTP
- 適合新手入門Spring Security With JWT的demoSpringJWT
- lua入門之環境搭建、第一個demo
- JNI入門這篇文章就夠了(含demo)
- Ionic 入門權威指南:期盼已久的混合應用開發SDK
- 一個基於Ionic3.x cordova的移動APP demoAPP
- [Ionic 2從入門到精通] 6.5 接入Google Maps和地理定位Go
- Ionic2入門教程 實現TodoList App-2 實現TodoList AppAPP
- 鴻蒙極速入門(四)-透過登入Demo瞭解ArkTS鴻蒙
- Flutter開始干係列-官方入門計數DemoFlutter
- SpringBoot整合ElasticSearch 入門demo學習筆記Spring BootElasticsearch筆記
- 『Material Design入門學習筆記』動畫(含demo)Material Design筆記動畫
- vue 基礎入門筆記 14:發表評論 demoVue筆記
- create-react-app + webpack + antd + less + mobx 的demo入門配置ReactAPPWeb
- 如何成為一名入門級 iOS 開發者及DemoiOS
- PHP 登入DEMOPHP
- 超圖GIS入門iserver搭建,前端呼叫iserver載入三維場景demoServer前端
- Quartz.NET 使用入門整理一(官網demo簡單分析)quartz
- MQTT物聯網通訊協議入門及Demo實現MQQT協議
- Electron入門Demo之桌面應用計算器筆記(二)筆記