学习笔记-AngularJs(四)
之前学习的事视图与模版,我们在控制器文件中直接定义一个数组,让其在模版文件中用ng-repeat指令构造一个迭代器,定义的数组http://t.cn/RUbL4rP如同以下:
$scope.phones = [
{'name':'xioabin','number':'18824863682','age':'12'},
{'name':'xioalong','number':'18824863683','age':'19'},
{'name':'xiaohua','number':'18824863684','age':'5'},
{'name':'xiaoMING','number':'18824863685','age':'1'},
{'name':'xiaoTU','number':'18824863686','age':'2'},
{'name':'xiaoKE','number':'18824863687','age':'40'},
];
这种形式往往不是我们所要的,我们通常会使用常用ajax技术去获取数据,在angular也有类似的服务来实现XHR,那就是 $http,使用怎么一个服务,需要将代码放置在本地服务器或是web站点上,首先先准备phone.json文件,如下:
[ {"name":"xioabin","number":"18824863682","age":"12"}, {"name":"xioalong","number":"18824863683","age":"19"}, {"name":"xiaohua","number":"18824863684","age":"5"}, {"name":"xiaoMING","number":"18824863685","age":"1"}, {"name":"xiaoTU","number":"18824863686","age":"2"}, {"name":"xiaodfs","number":"18824863687","age":"46"}, {"name":"xiaodfE","number":"18824863682","age":"46"}, {"name":"xiaobh","number":"18824863680","age":"48"}, {"name":"xiaogg","number":"18824863687","age":"10"}, {"name":"xiaouu","number":"18824863686","age":"20"}, {"name":"xiaoKds","number":"18824863682","age":"30"}, {"name":"xiaoKEdad","number":"18824863689","age":"60"}, {"name":"xiaoKb","number":"18824863683","age":"90"}, {"name":"xiaofa","number":"18824863685","age":"17"} ]
内容可以自己设置,模版文件代码与之前大同小异:
<!doctype html> <html ng-app ng-controller="PhoneListCtrl"> <head> <meta charset='utf8' /> <title ng-bind="'Google Phone Gallery:' + query"></title> <!-- <title ng-bind-template="Google Phone Gallery:{{query}}"></title> --> <script src="http://code.angularjs.org/angular-1.0.1.min.js"></script> <script src="script.js"></script> </head> <body> <div class="example2"> Select: <select name="select" id="select" ng-model='order'> <option value="name">名字</option> <option value="age">年龄</option> </select> Search: <input name="search" type="text" ng-model='query' /> <ul> <!--迭代器-->
<li>
<span>序号</span>
<span>姓名</span>
<span>号码</span>
<span>年龄</span>
</li>
<li ng-repeat='phone in phones | filter:query | orderBy:order'> <span>{{$index+1}}</span> <span>{{phone.name}}</span> <span>{{phone.number}}</span> <span>{{phone.age}}</span> </li> </ul> </div> </body> </html>
不同的就是控制器文件的不同,如下:
//注入服务$http
function PhoneListCtrl($scope,$http){
$http.get("phone.json").success(function(data, status, headers, config) {
if(status==200){ $scope.phones = data; }
console.log(status+","+headers+","+config);
// alert(JSON.stringify(data));
});
$scope.order = 'name';
}
这里传入了一个$http,那么我们就可以通过$http.get(路径).success(function(data,status){/*成功获取数据,之后该干嘛?*/}),data是返回的数据,status是状态码,header和config可以打印出来看一下,应该是一些配置和头部吧!这样$scope.phones就与之前一样是一个数组了!
官网的$http是这样的形式,可以参考着写:
$http({
url:'...',
method:'...',
data:'...',
params:'...',
cache:'...'
})
.success(function(){....})
.error(function() {.....});
如果我们的控制器按上面那样写的话,在压缩代码时候会出错,那么有这两种方法可以解决这个问题:
为了克服压缩引起的问题,只要在控制器函数里面给$inject属性赋值一个依赖服务标识符的数组,就像被注释掉那段最后一行那样:
PhoneListCtrl.$inject = ['$scope', '$http'];
另一种方法也可以用来指定依赖列表并且避免压缩问题——使用Javascript数组方式构造控制器:把要注入的服务放到一个字符串数组(代表依赖的名字)里,数组最后一个元素是控制器的方法函数:
var PhoneListCtrl = ['$scope', '$http', function($scope, $http) { /* constructor body */ }];
这就是angularjs的依赖注入了!当控制器构造的时候,AngularJS的依赖注入器会将这些服务注入到你的控制器中。当然,依赖注入器也会处理所需服务可能存在的任何传递性依赖(一个服务通常会依赖于其他的服务)。
注意不要使用‘$’前缀来命名你自己的服务和模型(就是自己可以定义自己的服务,像$http),否则可能会产生名字冲突。
学习笔记-AngularJs(四)的更多相关文章
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- X-Cart 学习笔记(四)常见操作
目录 X-Cart 学习笔记(一)了解和安装X-Cart X-Cart 学习笔记(二)X-Cart框架1 X-Cart 学习笔记(三)X-Cart框架2 X-Cart 学习笔记(四)常见操作 五.常见 ...
- opencv学习笔记(四)投影
opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...
- C++Primer第5版学习笔记(四)
C++Primer第5版学习笔记(四) 第六章的重难点内容 你可以点击这里回顾第四/五章的内容 第六章是和函数有关的知识,函数就是命名了的代码块,可以处理不同的情况,本章内 ...
- Asp.Net Core WebApi学习笔记(四)-- Middleware
Asp.Net Core WebApi学习笔记(四)-- Middleware 本文记录了Asp.Net管道模型和Asp.Net Core的Middleware模型的对比,并在上一篇的基础上增加Mid ...
- VSTO学习笔记(四)从SharePoint 2010中下载文件
原文:VSTO学习笔记(四)从SharePoint 2010中下载文件 上一次我们开发了一个简单的64位COM加载项,虽然功能很简单,但是包括了开发一个64位COM加载项的大部分过程.本次我们来给CO ...
- Python学习笔记(四)
Python学习笔记(四) 作业讲解 编码和解码 1. 作业讲解 重复代码瘦身 # 定义地图 nav = {'省略'} # 现在所处的层 current_layer = nav # 记录你去过的地方 ...
- deepin linux学习笔记(四)进不去图形界面怎么办?
目录 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 更换成lxde桌面 进不去图形界面怎么办? 总结 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 生命不息 ...
- 学习笔记-AngularJs(十)
前面一直在说自定义指令,但是却一直没有一次系统地去了解,现在需要我们一起来学习如何去使用自定义指令,去丰富html标签.属性,实现多元化.多功能的标签(或是属性).辣么,啥是指令?要了解指令,首先需要 ...
- 学习笔记-AngularJs(九)
到目前为止,我们所做的学习案例都是没有加任何动画效果的,对于以往来说,我们经常会去使用一些动画插件或是css框架(如:animate.css)来点缀我们的网页,这样显得生动,高大上,那么接下来我们可以 ...
随机推荐
- 如何将购物车信息存到Redis中?
存到Redis中,好处是速度快.毕竟写到硬盘需要更多的时间.加入购物车的功能,操作很频繁,可以通过Redis快速写入,移除,修改. 用什么方式呢? 传统的KEY,VALUE不太合适,每次增加修改,都要 ...
- this 指向 及 调用方式
1. this 指向 函数执行方式 this指向1.直接圆括号 window2.对象调用 对象3.事件触发 触发对象4.定时器运行 window (常常定义变量存储this以达到this指向特定对象) ...
- Codeforces 1062 E - Company
E - Company 思路: 首先,求出每个点的dfs序 然后求一些点的公共lca, 就是求lca(u, v), 其中u是dfs序最大的点, v是dfs序最小的大点 证明: 假设o是这些点的公共lc ...
- angular 拦截器
介绍:$http service在Angular中用于简化与后台的交互过程,其本质上使用XMLHttpRequest或JSONP进行与后台的数据交互.在与后台的交互过程中,可能会对每条请求发送到Ser ...
- Python Scrapy 爬虫框架实例(一)
之前有介绍 scrapy 的相关知识,但是没有介绍相关实例,在这里做个小例,供大家参考学习. 注:后续不强调python 版本,默认即为python3.x. 爬取目标 这里简单找一个图片网站,获取图片 ...
- html5 history 信息api pushState
这个功能可以进行传参,还可以解决ajax无法前进和倒退的问题 首先,history新增的两个方法history.replaceState()和history.pushState()方法属于HTML5浏 ...
- 如何模拟一个http请求并把response的内容保存下载下来,导出到excel中(结尾福利)
def doExport(self): # 模拟一个http请求 url = u'%s?dumptype=investigation&dumpid=%s&timezone=8' % ( ...
- springboot外置的Servlet容器
嵌入式Servlet容器:应用打成可执行的jar 优点:简单.便携: 缺点:默认不支持JSP.优化定制比较复杂(使用定制器[ServerProperties.自定义EmbeddedServle ...
- Linux上配置bond
http://blog.csdn.net/wuweilong/article/details/39720571 一,配置设定文件[root@woo ~]# vi /etc/sysconfig/netw ...
- BGP-6,解决IBGP的水平分割