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 相关文章推荐
json简单介绍
Jun 10 Javascript
js 控制图片大小核心讲解
Oct 09 Javascript
Javascript中For In语句用法实例
May 14 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
Aug 27 Javascript
JSONObject使用方法详解
Dec 17 Javascript
详解React-Todos入门例子
Nov 08 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
Feb 12 Javascript
Vue中如何实现轮播图的示例代码
Jul 27 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
Oct 18 Javascript
浅谈使用React.setState需要注意的三点
Dec 18 Javascript
详解Vue快速零配置的打包工具——parcel
Jan 16 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
Jul 09 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/03/02 PHP
php数据库抽象层 PDO
2011/05/07 PHP
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
2015/07/03 PHP
PHP基本语法实例总结
2016/09/09 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
JavaScript实现页面滚动图片加载(仿lazyload效果)
2011/07/22 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
JS实现点击掉落特效
2021/01/29 Javascript
python从ftp下载数据保存实例
2013/11/20 Python
Python使用MONGODB入门实例
2015/05/11 Python
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
python 不以科学计数法输出的方法
2018/07/16 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
详解Python requests 超时和重试的方法
2018/12/18 Python
对Python定时任务的启动和停止方法详解
2019/02/19 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
Pytorch 实现focal_loss 多类别和二分类示例
2020/01/14 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
JDO的含义
2012/11/17 面试题
为什么要有struct关键字
2012/05/08 面试题
自我鉴定写作要点
2014/01/17 职场文书
趣味运动会策划方案
2014/06/02 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书