AngularJS数据源的多种获取方式汇总


Posted in Javascript onFebruary 02, 2016

AngularJS 简介

AngularJS 是由 Google 发起的一款开源的前端 MVC 脚本框架,既适合做普通 WEB 应用也可以做 SPA(单页面应用,所有的用户操作都在一个页面中完成)。与同为 MVC 框架的 Dojo 的定位不同,AngularJS 在功能上更加轻量,而相比于 jQuery,AngularJS 又帮您省去了许多机械的绑定工作。在一些对开发速度要求高,功能模块不需要太丰富的非企业级 WEB 应用上,AngularJS 是一个非常好的选择。AngularJS 最为复杂同时也是最强大的部分就是它的数据绑定机制,这个机制帮助我们能更好的将注意力集中在数据的模型建立和传递上,而不是对底层的 DOM 进行低级的操作。

在AngularJS中,可以从$rootScope中获取数据源,也可以把获取数据的逻辑封装在service中,然后注入到app.run函数中,或者注入到controller中。本篇就来整理获取数据的几种方式。

■ 数据源放在$rootScope中

var app = angular.module("app",[]);
app.run(function($rootScope){
$rootScope.todos = [
{item:"",done:true},
{item:"",done:false}
];
})
<div ng-repeat="todo in todos">
{{todo.item}}
</div>
<form>
<input type="text" ng-model="newTodo" />
<input type="submit" ng-click=""todos.push({item:newTodo, done:false}) />
</form>

以上,把数据源放在$rootScope中的某个字段中,很容易被重写。

■ 数据源放在service中,把servie注入到run函数中

app.service("TodoService", function(){
this.todos = [
{item:"",done:true},
{item:"",done:false}
];
})
app.run(function($rootScope, TodoService){
$rootScope.TodoService = TodoService;
}) 
<div ng-repeat="todo in TodoService.todos">
{{todo.item}}
</div>
<form>
<input type="text" ng-model="newTodo" />
<input type="submit" ng-click=""TodoService.todos.push({item:newTodo, done:false}) />
</form>

在html中似乎这样写比较好:

<input type="submit" ng-click=""TodoService.todos.addodo(newTodo) />

在service中增加一个方法:

app.service("TodoService", function(){
this.todos = [
{item:"",done:true},
{item:"",done:false}
];
this.addTodo = fucntion(newTodo){
this.todos.push({item:newTodo, done:false})
}
})

■ 数据源放在service中,把servie注入到controller中

app.controller("TodoCtrl", function($scope, TodoService){
this.TodoService = TodoServce;
})

在对应的html中:

<body ng-app="app" ng-controller="TodoCtrl as todoCtrl">
<div ng-repeat="todo in todoCtrl.TodoService.todos">
{{todo.item}}
</div>
</body>
<form>
<input type="text" ng-model="newTodo" />
<input type="submit" ng-click="todoCtrl.TodoService.addTodo(newTodo)"/>
</form>

■ 数据源放在service中,把servie注入到controller中,与服务端交互

在实际项目中,service还需要和服务端交互。

var app = angular.module("app",[]);
app.service("TodoService", function($q, $timeout){
this.getTodos = function(){
var d = $q.defer();
//模拟一个请求
$timeout(function(){
d.resolve([
{item:"", done:false},
...
])
},3000);
return d.promise;
}
this.addTodo = function(item){
this.todos.push({item:item, done:false});
}
})
app.controller("TodoCtrl", function(TodoService){
var todoCtrl = this;
TodoService.getTodos().then(function(result){
todoCtrl.todos = result;
})
todoCtrl.addTodo = TodoService.addTodo;
})

以上所述是小编给大家分享的AngularJS数据源的多种获取方式汇总,希望对大家有所帮助。

Javascript 相关文章推荐
Mootools 1.2教程(21)——类(二)
Sep 15 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
Jan 02 Javascript
JavaScript 面向对象的之私有成员和公开成员
May 04 Javascript
基于jquery的一个拖拽到指定区域内的效果
Sep 21 Javascript
Js 回车换行处理的办法及replace方法应用
Jan 24 Javascript
Function.prototype.bind用法示例
Sep 16 Javascript
javascript抖动元素的小例子
Oct 28 Javascript
JavaScript学习笔记之JS事件对象
Jan 22 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
Jun 05 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
Aug 31 Javascript
Vue事件处理原理及过程详解
Mar 11 Javascript
Electron整合React使用搭建开发环境的步骤详解
Jun 07 Javascript
多种JQuery循环滚动文字图片效果代码
Jun 23 #Javascript
三种AngularJS中获取数据源的方式
Feb 02 #Javascript
原生JS实现拖拽图片效果
Aug 27 #Javascript
基于jquery实现下拉框美化特效
Feb 02 #Javascript
AngularJS自动表单验证
Feb 01 #Javascript
javascript实现右侧弹出“分享到”窗口效果
Feb 01 #Javascript
AngularJS手动表单验证
Feb 01 #Javascript
You might like
PHP文件上传原理简单分析
2011/05/29 PHP
php处理斐波那契数列非递归方法
2012/02/04 PHP
部署PHP项目应该注意的几点事项分享
2013/12/20 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
2016/06/13 PHP
PHP请求Socket接口测试实例
2016/08/12 PHP
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
js选项卡的实现方法
2015/02/09 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
chrome不支持form.submit的解决方案
2015/04/28 Javascript
switch语句的妙用(必看篇)
2016/10/03 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
Python简单读取json文件功能示例
2017/11/30 Python
python Spyder界面无法打开的解决方法
2018/04/27 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
python 使用建议与技巧分享(四)
2020/08/18 Python
浅析NumPy 切片和索引
2020/09/02 Python
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
上级检查欢迎词
2014/01/18 职场文书
十八届三中全会感言
2014/03/10 职场文书
地球一小时倡议书
2014/04/15 职场文书
生物技术专业求职信
2014/06/10 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis
Redis 常见使用场景
2021/08/30 Redis
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android
Python爬虫 简单介绍一下Xpath及使用
2022/04/26 Python