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 相关文章推荐
javascript 类方法定义还是有点区别
Apr 15 Javascript
Script标签与访问HTML页面详解
Jan 10 Javascript
jQuery中DOM操作实例分析
Jan 23 Javascript
jquery 插件实现多行文本框[textarea]自动高度
Mar 04 Javascript
JavaScript实现简单的日历效果
Sep 25 Javascript
Javascript中作用域的详细介绍
Oct 06 Javascript
three.js快速入门【推荐】
Jan 21 Javascript
利用jQuery异步上传文件的插件用法详解
Jul 19 jQuery
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
Mar 27 Javascript
详解可以用在VS Code中的正则表达式小技巧
May 14 Javascript
JS使用new操作符创建对象的方法分析
May 30 Javascript
vuex 实现getter值赋值给vue组件里的data示例
Nov 05 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中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
php生成扇形比例图实例
2013/11/06 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
php删除数组指定元素实现代码
2017/05/03 PHP
JQuery UI皮肤定制
2009/07/27 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
input 禁止输入特殊字符的四种实现方式
2016/08/24 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
javascript将非数值转换为数值
2018/09/13 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
JavaScript实现单图片上传并预览功能
2019/09/30 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
2020/03/09 Javascript
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
Python编程之列表操作实例详解【创建、使用、更新、删除】
2017/07/22 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
python django生成迁移文件的实例
2019/08/31 Python
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
Julep官网:美容产品和指甲油
2017/02/25 全球购物
接口的多继承会带来哪些问题
2015/08/17 面试题
医学检验专业个人求职信范文
2013/12/04 职场文书
自我评价范文分享
2014/01/04 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
办护照工作证明
2014/10/01 职场文书
2015年个人剖析材料范文
2014/12/29 职场文书
表扬信格式模板
2015/05/05 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
python数据分析之用sklearn预测糖尿病
2021/04/22 Python
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS
python游戏开发之pygame实现接球小游戏
2022/04/22 Python