[ionic开源项目教程] - 第4讲 通Service层获取数据列表
第4讲:通Service层获取数据列表
上一讲中页面的基本架构已完成,这一讲介绍如何通过service层从服务器请求数据,在通过controller层为载体,显示到视图层。
1.在services.js的Tab1Service中添加一个getList的函数,用来获取数据列表
- .service('Tab1Service', function ($http) {
- this.getClassify = function () {
- return [
- { name: '健康资讯', viewable: true, url: domain + '/info/list', page: 1, rows: 20 },
- { name: '健康知识', viewable: false, url: domain + '/lore/list', page: 1, rows: 20 },
- { name: '健康问答', viewable: false, url: domain + '/ask/list', page: 1, rows: 20 },
- { name: '健康图书', viewable: false, url: domain + '/book/list', page: 1, rows: 20 }
- ]
- }
- this.getList = function (url, page, rows) {
- return $http.post(url, { page: page, rows: rows })
- }
- })
2.完善controller.js的TabCtrl,使用Tab1Service.getList函数来获取数据列表,通过$scope.items作为数据载体。
- .controller('Tab1Ctrl', function ($scope,$rootScope, Tab1Service, $ionicSlideBoxDelegate, $ionicTabsDelegate) {
- $rootScope.imgUrl = imgUrl;
- var classify = Tab1Service.getClassify()
- $scope.slides = classify;
- $scope.tabs = classify;
- var slideIndex = 0;
- Tab1Service.getList(classify[0].url, 1, 20).then(function (response) {
- if (response.data.status) {
- $scope.items = response.data.tngou;
- console.log(response.data);
- }
- }, function (error) {
- console.log(error);
- })
- $scope.slideChanged = function (index) {
- //这里使用instances[1]的原因是视图中有两个tabs
- $ionicTabsDelegate._instances[1].select(index);
- };
- $scope.$on('$ionicView.afterEnter', function () {
- //等待视图加载完成的时候默认选中第一个菜单
- $ionicTabsDelegate._instances[1].select($ionicSlideBoxDelegate.currentIndex());
- });
- $scope.selectedTab = function (index) {
- //滑动的索引和速度
- $ionicSlideBoxDelegate.slide(index)
- }
- })
3.视图层tab1.html的最终代码
- <ion-view view-title="健康">
- <ion-content class="has-header">
- <ion-slide-box show-pager="false" class="has-header" on-slide-changed="slideChanged($index)">
- <ion-slide ng-repeat="slide in slides">
- <div class="list">
- <a ng-repeat="item in items" class="item item-thumbnail-right item-text-wrap" href="#">
- <img ng-src="{{imgUrl+item.img}}" width="30" height="30" alt="">
- <h3>{{::item.title}}</h3>
- <p>{{::item.description | substring:item.description}}</p>
- </a>
- </div>
- </ion-slide>
- </ion-slide-box>
- </ion-content>
- <ion-tabs 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>
4.代码解释
视图层只有list内的标签做了改动。
- ng-repeat="item in items":数据列表的载体。
- imgUrl+item.img:补充图片服务器链接,请参考 第5讲 在项目中使用全局配置。
- substring:请参考 第6讲 如何使用filter过滤器。
完!
[ionic开源项目教程] - 第4讲 通Service层获取数据列表的更多相关文章
- [ionic开源项目教程] - 第8讲 根据菜单分类加载数据(重要)
[ionic开源项目教程] - 第8讲 根据菜单分类加载数据(重要) [效果图] 注意 今天遇到一个比较棘手的问题,就是左右滑动菜单的设计不合理性,所以tab1.html对应的视图层和control ...
- [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开源项目教程] - 第12讲 医疗模块的实现以及Service层loadMore和doRefresh的提取封装
关注微信订阅号:TongeBlog,可查看[ionic开源项目]全套教程. 这一讲主要实现tab2[医疗]模块,[医疗]模块跟tab1[健康]模块类似. [ionic开源项目教程] - 第12讲 医疗 ...
- [ionic开源项目教程] - 第13讲 Service层优化,提取公用Service,以及生活和农业两大模块的实现
关注微信订阅号:TongeBlog,可查看[ionic开源项目]全套教程. 这一讲主要实现生活和农业两大模块的实现,在这个过程中,对service层提取出一个公用的BaseService. 这一讲分为 ...
- [ionic开源项目教程] - 第15讲 ionic用户个人中心登录注册的实现
第15讲 ionic用户个人中心登录注册的实现 这一讲包括登陆.注册.个人中心.个人资料页面的实现. 在一讲的改动有四个地方: 在config.js里配置接口地址 完善个人中心的服务层(service ...
- [ionic开源项目教程] - 第2讲 新建项目,配置app.js和controllers.js搭建基础视图
新建项目 由项目功能架构图选择合适的页面架构,这里选用Tab,ionic新建项目,默认的模板就是tab. $ ionic start TongeNews Creating Ionic app in f ...
随机推荐
- PHP第一课:开发环境配置
最近在学php,大概了解了一下php的语法结构,以及一些php及基础的知识.由此想到了要亲手试一试:以为以前是学java的用的 ide是myeclipse,所以对eclipse软件布局有特别的钟爱. ...
- LCIS(m*n) 最长公共上升子序列
详见:http://wenku.baidu.com/view/3e78f223aaea998fcc220ea0n3的: for(int i=1;i<=n;i++) for ...
- 13test05:亲密数
/*#include<iostream> using namespace std; int main() {int sum[3000]={0}; for(int i=1;i<3000 ...
- jquey ajax 无刷新提交form
http://bbs.csdn.net/topics/380237868 $.ajax({ type: "POST", url:ajaxCallUrl, data:$('#your ...
- HDU 2571 命运 动态规划
命运 http://acm.hdu.edu.cn/showproblem.php?pid=2571 Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到, ...
- hdu 4023 Game 博弈论
思路: 将15种分成5类: 1.1和2为一类: 2.3,4,5,6为一类: 3.7,8,9,10为一类: 4.11,12,13,14,15为一类: 5.15为一类. 比较各类的优先级,就会发现放置的顺 ...
- POJ2402/UVA 12050 Palindrome Numbers 数学思维
A palindrome is a word, number, or phrase that reads the same forwards as backwards. For example,the ...
- pycharm控制台中文乱码问题
pycharm控制台中文乱码问题一般是因为之前有配置保存到了文件里, C盘下.pycharm文件夹下有配置文件,删除文件后重装pycharm,配置会重置 不过最后解决问题的做法是删除配置文件后,重新装 ...
- js 异步请求封装
1. function ajax(url, onsuccess) { var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ...
- React组件-mixin
一.组件 二.代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=&q ...