学习笔记-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>&nbsp;&nbsp; 
<span>姓名</span>&nbsp;&nbsp; 
<span>号码</span>&nbsp;&nbsp; 
<span>年龄</span>
</li>
<li ng-repeat='phone in phones | filter:query | orderBy:order'>
<span>{{$index 1}}</span>&nbsp;&nbsp;  <span>{{phone.name}}</span>&nbsp; &nbsp; <span>{{phone.number}}</span>&nbsp; &nbsp; <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),否则可能会产生名字冲突。

 


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3使用Jsoup解析Java中HTML文件的示例

HTML是Web的核心&#xff0c;无论您是通过JavaScript&#xff0c;JSP&#xff0c;PHP&#xff0c;ASP还是任何其他Web技术动态生成的&#xff0c;您在Internet上看到的所有页面都是基于HTML的。 您的浏览器实际上是解析HTML并为您呈现。 但是&#xff0c;如果需要解析HTML文档并…

转载:闲话权限设计三层境界

转自&#xff1a;http://www.cnblogs.com/tsoukw/archive/2010/09/27/1836485.html喜欢金庸的武侠&#xff0c;对他那几部小说也是乐此不疲拿独孤求败来说&#xff0c;他的剑&#xff0c;从无名利剑&#xff0c;玄铁重剑&#xff0c;到木剑乃至最后的无剑&#xff0c;不知道破世…

webpack联邦模块之remotes方法

使用联邦模块后当前项目就会有两个依赖&#xff0c;一个是依赖共享模块&#xff0c;一个是依赖远程模块。运行时webpack/runtime/consumes用于解析共享模块&#xff0c;运行时webpack/runtime/remotes 用于解析远程模块。这两个模块对应的方法分别是__webpack_require__.f.cons…

径向菜单的制作

最终效果&#xff1a; 在径向菜单的制作前&#xff0c;首先需要知道几点知识点&#xff1a; Math.sin(x) x 的正玄值。返回值在 -1.0 到 1.0 之间&#xff1b; Math.cos(x) x 的余弦值。返回的是 -1.0 到 1.0 之间的数&#xff1b; 这两个函数中的X 都是指的“弧度”…

吉首大学2019年程序设计竞赛-F 天花乱坠

题目链接&#xff1a;https://ac.nowcoder.com/acm/contest/992/F 题意&#xff1a;给定正n边形&#xff0c;边长为100&#xff0c;以每条边的中点连线构成新的正n边形&#xff0c;无限循环下去&#xff0c;求所有边的长度和。 思路&#xff1a;简单数学计算题&#xff0c;可以…

SqliteHelper整理

刚开通博客不久&#xff0c;还没有发过文。这是第一篇&#xff0c;要鼓励我自己再接再厉。 另外&#xff0c;我也是刚刚踏上程序员这条路&#xff0c;有赖各位多多提携&#xff01; 闲话不多说&#xff0c;最近参与的项目包含本地化存储这一块。昨天就园子里找了些资料有另外补…

webpack联邦模块之consumes方法

对于使用联邦模块的项目会有两个依赖&#xff0c;一个是远程模块&#xff0c;一个是共享模块。上一篇文章解释了远程模块的加载和安装并初始化共享作用域。consumes则是共享模块的解决方案&#xff0c;用于在运行时加载并安装依赖的共享模块。 为什么叫consumes&#xff1f;我…

vue-cli使用说明

一、安装npm install -g vue-cli 推荐使用国内镜像 先设置cnpm npm install -g cnpm --registryhttps://registry.npm.taobao.org 如果安装失败&#xff0c;可以使用 npm cache clean 清理缓存&#xff0c;然后再重新安装 然后使用 cnpm 安装 vue-cli 和 webpack cnpm inst…

OptaPlanner –具有真实道路距离的车辆路线

在现实世界中&#xff0c;车辆路径问题&#xff08;VRP&#xff09;中的车辆必须走这条路&#xff1a;它们不能在客户之间直线行驶。 大多数VRP研究论文和演示都乐于忽略此实现细节。 和我一样&#xff0c;过去。 尽管使用道路距离&#xff08;而不是空中距离&#xff09;不会对…

自旋锁

什么是自旋锁&#xff1f; 自旋锁&#xff08;spinlock&#xff09;&#xff1a;是指当一个线程在获取锁的时候&#xff0c;如果锁已经被其它线程获取&#xff0c;那么该线程将循环等待&#xff0c;然后不断的判断锁是否能够被成功获取&#xff0c;直到获取到锁才会退出循环。 …

关于如何在PSA众多请求号中查找数据是属于哪一条。

其中有两个TCODE: RSTSODS与RSTSODS&#xff0c;我们可以查找数据源的PSA表&#xff0c;然后在SE16中可以看到。 另外我们对PSA点击管理&#xff0c;一般会出现在窗口上面出现PSA的表名。 当然有些不在的话&#xff0c;那就去查找那两个TCODE。转载于:https://www.cnblogs.com/…

TCP握手为什么需要三次通信

TCP三步握手three way (or three message) handshake 是TCP核心知识点&#xff0c;很长一段时间内我无法理解为什么TCP建立连接需要三次通信&#xff0c;而不是两次或者四次或者更多次。我翻了很多问答和博客&#xff0c;他们说的都很有道理&#xff0c;但是借来的火&#xff0…

小程序用户拒绝授权解决方法

众所周知&#xff0c;小程序进入首先都要进行微信授权的&#xff0c;那万一用户不小心点了拒绝按钮怎么办呢&#xff1f;不要慌&#xff0c;官方早已预料到此情况&#xff0c;并提供了api供开发者使用&#xff0c;下面就一起来研究下api吧 一、API接口 wx.openSetting(OBJECT)…

揭示垃圾收集暂停的时间长度

有几种方法可以改善您的产品。 一种方法是仔细跟踪用户的体验并在此基础上进行改进。 我们确实自己应用了此技术&#xff0c;并再次花了一些时间查看不同的数据 除了我们追求的许多其他方面之外&#xff0c;我们还提出了一个问题“延迟GC触发应用程序的最坏情况是什么”。 为了…

异步导致UI句柄增加的解决办法

在很多操作中&#xff0c;都会使用到异步线程&#xff0c;具体怎样使用在这不说了&#xff0c;网上有很好的说明&#xff1b;本人通过Delegate.BeginInvoke实现异步调用&#xff0c;完成后对UI控件进行设值等&#xff0c;还有System.Timers.Timer都一样&#xff0c;使用的是线程…

[转]android ListView详解

本文转自&#xff1a;http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html 由于google doc 很多人都打不开&#xff0c;故更新了源码下载地址 【源码下载】----2011-01-18 在android开发中ListView是比较常用的组件&#xff0c;它以列表的形式展示具体内容&#xff…

JS对象操作

一、String常用操作 1.截取 substr(start,length) //返回从指定位置开始的指定长度的字符串。 substring(start,end) //返回两个指定的位置之间的字符串。 slice(start,end) //包括字符串 stringObject 从 start 开始&#xff08;包括 start&#xff09;到 end 结束&#xff0…

JBoss BPM Suite 6.0.3版本的5个实用技巧

上周&#xff0c;红帽发布了标记为6.0.3的JBoss BPM Suite的下一版本&#xff0c;已订阅的用户可以在其客户门户中使用。 如果您对该版本的新增功能感到好奇&#xff0c;请在客户门户网站上在线查看版本说明和其余文档 。 我们正在寻找一些简单的方法来开始使用此新版本&…

package-lock.json

package.json确定依赖的范围&#xff0c;package-lock.json将这个范围精确到具体版本。主要是为了解决在各个环境中得到确定的node_modules&#xff0c;如果只依赖package.json因为该文件声明的是直接依赖的范围&#xff0c;它无法将直接依赖固定在某个特定版本&#xff0c;也无…

Linux启动管理

启动管理系统运行级别 运行级别&#xff1a;含义0 &#xff1a;关机1 &#xff1a;但用户模式&#xff0c;可以想象为windows的安全模式&#xff0c;主要用于系统修复2 &#xff1a;不完全的命令行模式&#xff0c;不含NFS服务3 &#xff1a;完全的命令行模式&#xff0c;就是标…