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 相关文章推荐
IE bug table元素的innerHTML
Jan 11 Javascript
js 自制滚动条的小例子
Mar 16 Javascript
jquery写个checkbox——类似邮箱全选功能
Mar 19 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
Dec 17 Javascript
Javascript判断文件是否存在(客户端/服务器端)
Sep 16 Javascript
js读取cookie方法总结
Oct 31 Javascript
canvas实现图像截取功能
Feb 06 Javascript
微信小程序 详解页面跳转与返回并回传数据
Feb 13 Javascript
JavaScript 中的12种循环遍历方法【总结】
May 31 Javascript
JavaScript实现简单轮播图效果
Dec 01 Javascript
javascript实现手动点赞效果
Apr 09 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
Apr 21 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
再说下636单管机
2021/03/02 无线电
php获取当前页面完整URL地址
2015/12/30 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
php的lavarel框架中join和orWhere的用法
2020/12/28 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
Javascript事件实例详解
2013/11/06 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
玩转python爬虫之cookie使用方法
2016/02/17 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
用Python写王者荣耀刷金币脚本
2017/12/21 Python
python生成圆形图片的方法
2020/03/25 Python
django中send_mail功能实现详解
2018/02/06 Python
Python os.rename() 重命名目录和文件的示例
2018/10/25 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
三星美国官网:Samsung美国
2017/02/06 全球购物
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
Roxy荷兰官方网站:冲浪、滑雪板、服装和配件
2019/10/22 全球购物
结构工程研究生求职信
2013/10/13 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
我的教育故事演讲稿
2014/05/04 职场文书
网站推广策划方案
2014/06/04 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
学生自我评语
2015/01/04 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书
初中化学教学反思
2016/02/22 职场文书
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers