先上图看效果:
上代码 ,一般都是 按顺序上代码的 :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<link rel="stylesheet" href="lib/css/ionic.css">
<script src="lib/js/ionic.bundle.min.js"></script>
<!--把自己写的css样式引入进来-->
<link rel="stylesheet" href="css/index.css">
<script>
var app=angular.module("myapp",["ionic"]);
//路由
app.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider.state("home", {
url: "/home",
views: {
"view-home": {
//templateUrl: 是指定模板
templateUrl: "index/home.html",
//controller 直接给它指定控制器的名字
controller: "HomeCtrl"
}
}
}).state("cart", {
url: "/cart",
views: {
"view-cart": {
templateUrl: "index/cart.html",
}
}
}).state("mine", {
url: "/mine",
views: {
"view-mine": {
templateUrl: "index/mine.html",
}
}
});
//如果都找不到就会执行此代码 默认地址
$urlRouterProvider.otherwise("home");
});
//侧拉
app.controller("HomeCtrl",function ($scope, $ionicSideMenuDelegate,$http) {
//给头部侧拉设置的点击事件toggleLeft() 可是实现类似开启和关闭效果
$scope.toggleLeft = function() {
$ionicSideMenuDelegate.toggleLeft();
}
//定义一个空数组
$scope.book_list = [];
var urls = [
"", // 0
"book_list_1.json", // pageNo: 1
"book_list_2.json", // pageNo: 2
"book_list_3.json" // pageNo: 3
];
var pageNo = 1;
var loadData = function () {
var httpReq = $http.get(urls[pageNo]);
//请求成功执行
httpReq.success(function (data) {
$scope.book_list = $scope.book_list.concat(data);
//请求失败执行
}).error(function (data, status) {
console.log(status);
//成功与否都执行
}).finally(function () {
// 停止广播ion-refresher
$scope.$broadcast('scroll.infiniteScrollComplete');
});
};
loadData();
//下拉刷新
$scope.doRefresh = function () {
$scope.book_list = [];
pageNo = 1;
loadData();
};
//上拉加载
$scope.loadMore = function () {
if (pageNo++ > 3) {
pageNo = 3;
return;
}
loadData();
};
})
</script>
</head>
<body ng-app="myapp">
<!--因为侧拉和选项卡起冲突所以把中间内容和 侧拉内容需要分开写 所以就需要把侧拉方法定义在这里-->
<ion-side-menus>
<!-- 中间内容 -->
<ion-side-menu-content >
<!--写路由页面的话必须写这行代码 , 就是路由页面的代码会自动找这行代码-->
<ion-nav-view name="view-home"></ion-nav-view>
</ion-side-menu-content>
<!-- 左侧菜单 -->
<ion-side-menu side="left">
<ion-header-bar align-title="center" >
<h1 class="title">侧拉!</h1>
</ion-header-bar>
<ion-content>
<ion-list>
<ion-item >
<p>今天很开心</p>
</ion-item>
</ion-list>
</ion-content>
</ion-side-menu>
</ion-side-menus>
<!--=============================================================================================-->
<ion-tabs class="tabs-positive tabs-icon-top">
<!-- ui-sref: 以后路由就用这个代码来写 -->
<ion-tab title="首页" icon-on="ion-ios-filing" icon-off="ion-ios-filing-outline"ui-sref="home">
<!--写路由页面的话必须写这行代码 , 就是路由页面的代码会自动找这行代码-->
<!-- 标签 1 内容 -->
</ion-tab>
<ion-tab title="关于" icon-on="ion-happy" icon-off="ion-happy-outline" ui-sref="cart">
<ion-nav-view name="view-cart"></ion-nav-view>
<!-- 标签 2 内容 -->
</ion-tab>
<ion-tab title="我的" icon-on="ion-ios-gear" icon-off="ion-ios-gear-outline" ui-sref="mine">
<ion-nav-view name="view-mine"></ion-nav-view>
<!-- 标签 3 内容 -->
</ion-tab>
</ion-tabs>
</body>
</html>
首页代码:
<ion-header-bar align-title="center" class="bar-positive">
<div class="buttons">
<button class="button" ng-click="toggleLeft()"><i class="icon ion-bonfire"></i></button>
</div>
<h1 class="title">Title!</h1>
</ion-header-bar>
<ion-content class="home">
<ion-refresher pulling-text="下拉刷新" on-refresh="doRefresh()"></ion-refresher>
<ion-list>
<!--把解析出来的json串赋值到下面 -->
<ion-item ng-repeat="book in book_list">
<div class="a">
<img ng-src="{{book.picture}}" width="128px" height="128px"/>
</div>
<div class="details">
<h2>{{book.title}}</h2>
<h3>{{book.description}}</h3>
<div>
<span>{{ book.price | currency: "¥" }}</span>
<i class="icon ion-ios-cart"></i>
</div>
</div>
</ion-item>
</ion-list>
<!--上拉加载-->
<ion-infinite-scroll on-infinite="loadMore()" distance="1%" immediate-check="false"></ion-infinite-scroll>
</ion-content>
我的代码 上图:
<ion-header-bar align-title="center" class="bar-positive">
<h1 class="title">个人中心!</h1>
<div class="buttons">
<button class="button"><i class="icon ion-speedometer"></i></button>
</div>
</ion-header-bar>
<ion-content class="mine">
<div class="aa">
<img src="img/pic_04.jpg" height="80" width="80"/>
<p>姓名</p>
</div>
<div class="list">
<a class="item item-icon-left item-icon-right">
<i class="icon ion-clipboard"></i>
我的订单
<i class="icon ion-ios-arrow-right"></i>
</a>
<a class="item item-icon-left item-icon-right">
<i class="icon ion-star"></i>
我的收藏
<i class="icon ion-ios-arrow-right"></i>
</a>
<a class="item item-icon-left item-icon-right">
<i class="icon ion-gear-a"></i>
设置
<i class="icon ion-ios-arrow-right"></i>
</a>
</div>
</ion-content>
==============================================================
最后配上css 样式类:
.home .a {
float: left;
}
.home .details h3 {
margin-top: 16px;
}
.home .details div {
margin-top: 48px;
}
.home .details span {
color: red;
font-size: large;
}
.home .details .ion-ios-cart {
position: absolute;
right: 16px;
}
.mine .aa{
width:100%;
height: 200px;
/*设置背景图*/
background: url("../img/mine_bg.jpg")no-repeat;
background-size: cover;
/*水平对齐方式 内容居中*/
text-align: center;
}
.mine .aa img {
/*设置圆形图片*/
border-radius: 50%;
margin-top: 30px;
}
最后附上图片每个代码所在类:
重要的是每个页面的布局位置 模板 只要分析好就能截取其中的代码进行套用