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 读取XML数据,在页面中展现、编辑、保存的实现
Oct 27 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
May 07 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
Nov 17 Javascript
css+js实现部分区域高亮可编辑遮罩层
Mar 04 Javascript
js实现同一页面多个运动效果的方法
Apr 10 Javascript
jQuery实现ToolTip元素定位显示功能示例
Nov 23 Javascript
js实现4个方向滚动的球
Mar 06 Javascript
JS实现的文件拖拽上传功能示例
May 21 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
Sep 03 Javascript
微信小程序-form表单提交代码实例
Apr 29 Javascript
微信小程序开发技巧汇总
Jul 15 Javascript
js和jquery判断数据类型的4种方法总结
Aug 28 jQuery
多种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 session会话的安全性分析
2011/09/08 PHP
THINKPHP内容分页代码分享
2015/01/14 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
php中array_fill函数的实例用法
2021/03/02 PHP
经验几则 推荐
2006/09/05 Javascript
prototype.js的Ajax对象
2006/09/23 Javascript
jquery 页面滚动到指定DIV实现代码
2013/09/25 Javascript
js导出txt示例代码
2014/01/14 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
2016/07/27 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
Bootstrap导航条学习使用(一)
2017/02/08 Javascript
100多个基础常用JS函数和语法集合大全
2017/02/16 Javascript
ES5 ES6中Array对象去除重复项的方法总结
2017/04/27 Javascript
手写简单的jQuery雪花飘落效果实例
2018/04/22 jQuery
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
python爬虫常用的模块分析
2014/08/29 Python
python2.7 mayavi 安装图文教程(推荐)
2017/06/22 Python
Selenium 模拟浏览器动态加载页面的实现方法
2018/05/16 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
教师的实习自我鉴定
2013/12/17 职场文书
安全生产知识竞赛活动总结
2014/07/07 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
顶岗实习计划书
2015/01/16 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python
如何用python清洗文件中的数据
2021/06/18 Python
Python爬虫框架之Scrapy中Spider的用法
2021/06/28 Python
Python字符串的转义字符
2022/04/07 Python