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 相关文章推荐
JQuery中$之选择器用法介绍
Apr 05 Javascript
jquery select多选框的左右移动 具体实现代码
Jul 03 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
Mar 02 Javascript
在HTML中插入JavaScript代码的示例
Jun 03 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
Jun 17 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
Mar 24 jQuery
Vue如何引入远程JS文件
Apr 20 Javascript
使用SVG基本操作API的实例讲解
Sep 14 Javascript
基于vue-upload-component封装一个图片上传组件的示例
Oct 16 Javascript
vue实现微信二次分享以及自定义分享的示例
Mar 20 Javascript
js键盘事件实现人物的行走
Jan 17 Javascript
js实现表单项的全选、反选及删除操作示例
Jun 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获取本周开始日期和结束日期的方法
2015/03/09 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
详解php用static方法的原因
2018/09/12 PHP
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
JavaScript中的细节分析
2012/06/30 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
招聘网站基于jQuery实现自动刷新简历
2015/05/10 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
jQuery异步提交表单实例
2017/05/30 jQuery
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
python基础教程之数字处理(math)模块详解
2014/03/25 Python
解决phantomjs截图失败,phantom.exit位置的问题
2018/05/17 Python
python在不同条件下的输入与输出
2020/02/13 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
什么是makefile? 如何编写makefile?
2013/01/02 面试题
介绍一下grep命令的使用
2012/06/28 面试题
总经理驾驶员岗位职责
2013/12/04 职场文书
个人作风建设总结
2014/10/23 职场文书
2015年科协工作总结
2015/05/19 职场文书
网吧温馨提示
2015/07/17 职场文书
《纸船和风筝》教学反思
2016/02/18 职场文书
2019年思想汇报
2019/06/20 职场文书