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 相关文章推荐
对采用动态原型方式无法展示继承机制得思考
Dec 04 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
Sep 16 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
Aug 09 Javascript
jquery无法设置checkbox选中即没有变成选中状态
Mar 27 Javascript
DWR中各种java方法的调用
May 04 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
Jun 09 Javascript
jQuery Ajax前后端使用JSON进行交互示例
Mar 17 Javascript
bootstrap可编辑下拉框jquery.editable-select
Oct 12 jQuery
JavaScript代码执行的先后顺序问题
Oct 29 Javascript
vue.js 实现输入框动态添加功能
Jun 25 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
Sep 11 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
Nov 06 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
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
2017/05/17 PHP
jquery 使用点滴函数代码
2011/05/20 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
JavaScript 中对象的深拷贝
2016/12/04 Javascript
js定时器实例分享
2016/12/20 Javascript
canvas实现图片根据滑块放大缩小效果
2017/02/24 Javascript
JavaScript利用fetch实现异步请求的方法实例
2017/07/26 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
2018/09/10 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
JAVA软件工程师测试题
2014/07/25 面试题
校园广播稿500字
2014/02/04 职场文书
节约电力资源的建议书
2014/03/12 职场文书
优质服务活动实施方案
2014/05/02 职场文书
教师求职信范文
2014/05/24 职场文书
2014年感恩母亲演讲稿
2014/05/27 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
中国世界遗产导游词
2015/02/13 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
2021/05/28 Python
Go语言并发编程 sync.Once
2021/10/16 Golang