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 一个函数对同一元素的多个事件响应
Jul 25 Javascript
HTML DOM的nodeType值介绍
Mar 31 Javascript
一个JQuery写的点击上下滚动的小例子
Aug 27 Javascript
jQuery弹出(alert)select选择的值
Apr 21 Javascript
js正则表达exec与match的区别说明
Jan 29 Javascript
javascript arguments使用示例
Dec 16 Javascript
JS简单生成两个数字之间随机数的方法
Aug 03 Javascript
vue2.0中click点击当前li实现动态切换class
Jun 21 Javascript
小程序实现分类页
Jul 12 Javascript
Vue v-for循环之@click点击事件获取元素示例
Nov 09 Javascript
JS前端模块化原理与实现方法详解
Mar 17 Javascript
微信小程序实现选项卡滑动切换
Oct 22 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实现在多维数组中查找特定value的方法
2015/07/29 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
事件绑定之小测试  onclick &amp;&amp; addEventListener
2011/07/31 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
js获取通过ajax返回的map型的JSONArray的方法
2014/01/09 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
JavaScript中filter的用法实例分析
2019/02/27 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
[01:02:55]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python enumerate遍历数组示例应用
2008/09/06 Python
Python Matplotlib库入门指南
2015/05/18 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
2018/02/18 Python
python列表插入append(), extend(), insert()用法详解
2019/09/14 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
python中pdb模块实例用法
2021/01/15 Python
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
毕业生多媒体设计求职信
2013/10/12 职场文书
初二学生评语大全
2014/12/26 职场文书
干部理论学习心得体会
2016/01/21 职场文书
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS