[ionic开源项目教程] - 第12讲 医疗模块的实现以及Service层loadMore和doRefresh的提取封装
关注微信订阅号:TongeBlog,可查看[ionic开源项目]全套教程。
这一讲主要实现tab2【医疗】模块,【医疗】模块跟tab1【健康】模块类似。
[ionic开源项目教程] - 第12讲 医疗模块的实现以及Service层loadMore和doRefresh的提取封装
[效果图]

1.实现tab2.html【医疗】模块的视图部分实现(跟tab1.html类似):
<ion-view view-title="医疗">
<ion-slide-box show-pager="false" on-slide-changed="slideChanged($index)">
<ion-slide ng-repeat="slide in slides">
<ion-content>
<ion-refresher pulling-text="下拉刷新" on-refresh="slide.doRefresh()"></ion-refresher>
<div class="list has-header">
<a ng-repeat="item in slide.items" class="item item-thumbnail-right item-text-wrap" ng-click="goDetails(item,'{{slide.type}}')">
<img ng-src="{{imgUrl+item.img}}" width="30" height="30" alt="">
<h3>{{::item.name}}</h3>
<p>{{::item.description | substring:item.description}}</p>
</a>
</div>
<ion-infinite-scroll ng-if="!slide.isload" on-infinite="slide.loadMore()" distance="1%">
</ion-infinite-scroll>
</ion-content>
</ion-slide>
</ion-slide-box>
<ion-tabs id="{{currentTabId}}" class="tabs-striped tabs-top">
<ion-tab ng-repeat="item in tabs" on-select="selectedTab($index)" title="{{item.name}}"></ion-tab>
</ion-tabs>
</ion-view>
注意:tab2.html也为tabs组建定义了唯一标识currentTabId。
2.完善Service层的Tab3Service
为了实现代码重用,这里将loadMore和doRefresh单独提到外边来实现,3个tab分别对两个方法调用。(大家有兴趣可研究着将健康模块的service层Tab1Service也按照此方式对loadMore和doRefresh进行封装)
.service('Tab2Service', function ($http) {
var loadMore = function ($this) {
console.log("正在加载更多数据..." + $this.page);
$http.get($this.url + "?page=" + $this.page + "&rows=" + settings.rows).success(function (response) {
console.log(response);
if (response.list) {
$this.items = $this.items.concat(response.list);
$this.page++;
} else {
console.log("没有数据了...")
$this.isload = true;
}
$this.callback();
});
}
var doRefresh = function ($this) {
console.log("正在执行refresh操作...");
$http.get($this.url + "?page=1&rows=" + settings.rows).success(function (response) {
console.log(response);
if (response.list) {
$this.page = 2;
$this.items = response.list;
}
$this.callback();
$this.isload = true;
});
}
this.getTab2Menu = function () {
return [
{
name: '疾病查询', isload: true, url: server.domain + '/disease/list', type: 'disease',
page: 1, rows: 20,
items: [],
loadMore: function () {
loadMore(this);
},
doRefresh: function () {
doRefresh(this);
},
callback: function () {
//回掉函数
}
},
{
name: '病状查询', isload: true, url: server.domain + '/symptom/list', type: 'symptom',
page: 1, rows: 20,
items: [],
loadMore: function () {
loadMore(this);
},
doRefresh: function () {
doRefresh(this);
},
callback: function () {
//回掉函数
}
},
{
name: '检查项目', isload: true, url: server.domain + '/check/list', type: 'check',
page: 1, rows: 20,
items: [],
loadMore: function () {
loadMore(this);
},
doRefresh: function () {
doRefresh(this);
},
callback: function () {
//回掉函数
}
},
{
name: '手术项目', isload: true, url: server.domain + '/operation/list', type: 'operation',
page: 1, rows: 20,
items: [],
loadMore: function () {
loadMore(this);
},
doRefresh: function () {
doRefresh(this);
},
callback: function () {
//回掉函数
}
}
]
}
})
3.完善Tab2的控制器层Tab2Ctrl
依赖注入Tab2Service,调用getTab2Menu()构建页面的data和action,注意这里要给currentTabId赋值。
.controller('Tab2Ctrl', function ($scope, $state, Tab2Service, $controller, $ionicTabsDelegate) {
$scope.classify = Tab2Service.getTab2Menu()
$scope.currentTabId = "tab2";
$controller('BaseCtrl', { $scope: $scope });
$scope.goDetails = function (item, type) {
var title = "", name = "";
if (item.title) {
title += item.title;
}
if (item.name) {
title += item.name;
}
$state.go('tab.tab2-details', { id: item.id, title: title, type: type })
$ionicTabsDelegate.showBar(false);
}
})
难点和注意事项
- 记得给currentTabId赋值
- Service层loadMore和doRefresh的提取封装
到这里如果有任何问题,请通过文章最下面的联系方式联系我。
[ionic开源项目教程] - 第12讲 医疗模块的实现以及Service层loadMore和doRefresh的提取封装的更多相关文章
- [ionic开源项目教程] - 第11讲 封装BaseController实现controller继承
关注微信订阅号:TongeBlog,可查看[ionic开源项目]全套教程. 截止到第10讲,tab1[健康]模块的功能基本已经完成了,但这一讲中,controller层又做了较大的改动,因为下一讲中t ...
- [ionic开源项目教程] - 第10讲 新闻详情页的用户体验优化
目录 [ionic开源项目教程] 第1讲 前言,技术储备,环境搭建,常用命令 [ionic开源项目教程] 第2讲 新建项目,架构页面,配置app.js和controllers.js [ionic开源项 ...
- [ionic开源项目教程] - 第9讲 新闻详情页的实现
目录 [ionic开源项目教程] 第1讲 前言,技术储备,环境搭建,常用命令 [ionic开源项目教程] 第2讲 新建项目,架构页面,配置app.js和controllers.js [ionic开源项 ...
- [ionic开源项目教程] - 第14讲 ionic解决跨域问题
[ionic开源项目教程] 第14讲 使用jsonp解决跨域问题 相信很多朋友在开发中都会遇到以下这个问题. No 'Access-Control-Allow-Origin' header is pr ...
- [ionic开源项目教程] - 第8讲 根据菜单分类加载数据(重要)
[ionic开源项目教程] - 第8讲 根据菜单分类加载数据(重要) [效果图] 注意 今天遇到一个比较棘手的问题,就是左右滑动菜单的设计不合理性,所以tab1.html对应的视图层和control ...
- [ionic开源项目教程] - 手把手教你使用移动跨平台开发框架Ionic开发一个新闻阅读APP
前言 这是一个系列文章,从环境搭建开始讲解,包括网络数据请求,将持续更新到项目完结.实战开发中遇到的各种问题的解决方案,也都将毫无保留的分享给大家. 关注订阅号:TongeBlog ,查看移动端跨平台 ...
- [ionic开源项目教程] - 第13讲 Service层优化,提取公用Service,以及生活和农业两大模块的实现
关注微信订阅号:TongeBlog,可查看[ionic开源项目]全套教程. 这一讲主要实现生活和农业两大模块的实现,在这个过程中,对service层提取出一个公用的BaseService. 这一讲分为 ...
- [ionic开源项目教程] - 第2讲 新建项目,配置app.js和controllers.js搭建基础视图
新建项目 由项目功能架构图选择合适的页面架构,这里选用Tab,ionic新建项目,默认的模板就是tab. $ ionic start TongeNews Creating Ionic app in f ...
- [ionic开源项目教程] - 第4讲 通Service层获取数据列表
第4讲:通Service层获取数据列表 上一讲中页面的基本架构已完成,这一讲介绍如何通过service层从服务器请求数据,在通过controller层为载体,显示到视图层. 1.在services.j ...
随机推荐
- iOS7 状态栏 修改为白色字体的步骤
1在Info.plist中设置UIViewControllerBasedStatusBarAppearance 为NO2 在需要改变状态栏颜色的ViewController中在ViewDidLoad方 ...
- jQuery打印插件PrintArea实现
实现javascript打印功能,打印整个页面就很简单,但如果指定打印某一个区域就有点难点,这里有一个jQuery插件PrintArea可实现打印页面某区域功能. 使用说明需要使用jQuery库文件和 ...
- c# 与flash通信简介
许久不曾写随笔,即使许久的怠惰,是该抬抬头,看看天了. 公司项目,项目要求是在winForm端先获取下位机的肌电信号采集数据,然后根据这些数据的变化来控制flash游戏,这样一些患者在flash游戏中 ...
- jquery select处理
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转.传参 js 处理 select :选中,删除,更改等 http://blog.csdn.net/wust_star/ ...
- Javascript scrollTop 20大洋
花了20大洋,买了一个视频,这是读书笔记 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"&g ...
- struct 理解 (需要经常理解)
2014.3.11 分析offviewer时,有一些问题,很基础的,但是忘记了,发现问题那就快点搞定它 以下内容参考自百度百科: (2)struct 结构体有点忘记了,要复习一下 定义一个结构的一般 ...
- Android图片缩放方法
安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们 ...
- lintcode:带环链表
带环链表 给定一个链表,判断它是否有环. 解题 定义两个指针p1 p2 p1每次向前走一步 p2每次向前走两步 当p2能赶上p1的时候说明有环 /** * Definition for ListNod ...
- android学习--radiogroup学习
这个阶段在学习android的相关基本UI现将相关练习的代码粘贴在此便于后期学习之用(radio控件) 效果图: main_layout.xml <?xml version="1. ...
- VBA高效删除不连续多行
最近在搞VBA,在感叹Excel功能强大的同时,对于新接触的一门编程语言也很烦恼.很多基础的语法都要靠网上搜索.现总结一些学习到的心得. VBA高效删除不连续多行 在一个拥有几万条数据的Excel中, ...