AngularJS入门教程之Helloworld示例


Posted in Javascript onDecember 25, 2016

本文实例讲述了AngularJS入门教程之Helloworld示例。分享给大家供大家参考,具体如下:

什么是AngularJs?

angularjs是一个为动态WEB应用设计的结构框架。它能让你使用HTML作为模板语言,通过扩展HTML的语法,让你能更清楚、简洁地构建你的应用组件。它的创新点在于,利用数据绑定和依赖注入,它使你不用再写大量的代码了。这些全都通过浏览器端的javascript实现,这也使得它能够完美地和任何服务器技术结合。

AngularJS简单的Helloworld例子:

<!DOCTYPE HTML>
<!-- 告诉AngularJs引擎从这里开始是ng-app管理 -->
<html lang="en-US" ng-app>
<head>
  <meta charset="UTF-8">
  <title>AngularJS例子</title>
</head>
<body>
  <!-- ng-model数据模型 -->
  <input type="text" ng-model='name' placeholder="yourname" />
  <!-- {{}}angular表达式 -->
  <h1>Hello {{name}}</h1>
  <script type="text/javascript" src='http://cdn.staticfile.org/angular.js/1.3.0-beta.13/angular.min.js'></script>
</body>
</html>

这个例子其实展示了angularjs的数据双向绑定,

AngularJS入门教程之Helloworld示例

AngularJS入门教程之Helloworld示例

左边为数据单向绑定图解,通常是要你管jquery,backbone这类框架,右边为angularjs数据双向绑定。

模型 视图 控制器(MVC)

MVC背后的核心概念就是,你在你的代码之间明确分离管理数据(模型),应用程序逻辑(控制器),并将数据给用户(视图)。

视图从模型中获取数据展示给用户。当用户通过点击或者输入和应用程序进行交互时,控制器通过改变模型中的数据响应。最终,模型层通知视图层,已经发生改变,一边更新显示。

在Angluar应用中,视图层就是DOM,控制器就是Javascript类,模型数据存储在对象属性中。

angularjs数据绑定

像jquery库这种扩展到客户端的模式,让我们遵循相似的风格,但由于更新的能力,单独地DOM的部分,而不是更新整个页面。这里,我们合并HTML字符串和数据,然后通过元素上设置innerHTML将结构插入到我们想要的Dom中。

这一切都运行的相当好,但是你想将新数据插入到界面,或者改变基于用户输入的数据时,你需要做很多又不是价值不高的工作,来确保同时在界面和javascript属性中获取的数据正常的状态。

但是,倘若我们有什么东西把这些工作都为我们做好了,同时不需要写代码?倘若我能仅仅声明界面的某一部分映射到javascript的属性,让他们自动的同步?这种编程方式叫做数据绑定。我们在angular中包括这种功能,因为当编写视图和模型时,使用mvc来消除代码那是非常棒的。移动数据从一个地方的绝大部分自动发生。

注:最上面的例子就能体现

依赖注入(DI)

$scope对象把数据绑定自动的传递给了我们。我们没有必要通过调用任何函数来创建它。我们只是要求把它放到HelloController构造函数中。

在后续学习中,我们发现,scope并不是我们唯一需要的。如果我们需要数据绑定它到用户浏览器指定的URL地址中,我们需要在构造函数中,添加一个scope并不是我们唯一需要的。如果我们需要数据绑定它到用户浏览器指定的URL地址中,我们需要在构造函数中,添加一个location对象,就这样:

function HelloController($scope,$location){
  $scope.greeting={text:'Hello'}
  //使用$location 在这
}

通过Angular的依赖注入系统,我们可以得到这种效果。依赖注入允许我们遵循一种开发风格,这种开发风格中,不是创建依赖,我们的类仅仅添加他们需要的。

这个遵循了一个叫迪米特法则的设计模式,也被称作最少知识法则。由于HelloController的任务是建立greeting模型的初始值,这种模式就是说,它不需要担心像$scope如何创建以及在那里找到它。

angularJs指令

angular最优秀部分之一是你可以把你写的模板当成HTML。因为在框架的核心层,我们已经包括了一个强大的DOM转换引擎,可以让你扩展HTML语法,因此你才可以这样做。

我们已经在模板文件中看到了多个新的属性,这些并不是HTML规范的一部分。示例中包括两个大括号是用来数据绑定的,ng-controller是用来指定那个控制器来服务那个师徒,ng-model将一个输入框绑定到模型部分。我们称这些叫HTML扩展指令。

angular带有很多标识符,帮助你为你的应用程序定义视图。这些标识符可以定义我们常见的视图作为模板。它们可以说明应用程序如何工作的或者创建可重复使用的组件。

同时不局限于Angular自带的标识符。你可以写你自己的来扩展HTML模板,做任何你想做的事。

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
基于jquery的地址栏射击游戏代码
Mar 10 Javascript
js/jquery去掉空格,回车,换行示例代码
Nov 05 Javascript
JavaScript闭包函数访问外部变量的方法
Aug 27 Javascript
js实现点击左右按钮轮播图片效果实例
Jan 29 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
Oct 14 Javascript
jQuery使用Layer弹出层插件闪退问题
Dec 22 Javascript
Vue2.5通过json文件读取数据的方法
Feb 27 Javascript
总结js函数相关知识点
Feb 27 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
Dec 24 Javascript
mocha的时序规则讲解
Feb 16 Javascript
详解Vue源码学习之双向绑定
Apr 10 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
Jul 17 Javascript
jQuery实现圣诞节礼物动画案例解析
Dec 25 #Javascript
AngularJS打开页面隐藏显示表达式用法示例
Dec 25 #Javascript
AngularJS开发教程之控制器之间的通信方法分析
Dec 25 #Javascript
使用jsonp实现跨域获取数据实例讲解
Dec 25 #Javascript
JavaScript中数据类型转换总结
Dec 25 #Javascript
javascript实现用户点击数量统计
Dec 25 #Javascript
jQuery扩展+xml实现表单验证功能的方法
Dec 25 #Javascript
You might like
PHP实现MVC开发得最简单的方法――模型
2007/04/10 PHP
深入php函数file_get_contents超时处理的方法详解
2013/06/03 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
jQuery 一个图片切换的插件
2011/10/09 Javascript
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
实例详解Node.js 函数
2018/06/10 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
Python中列表元素转为数字的方法分析
2016/06/14 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
对python GUI实现完美进度条的示例详解
2018/12/13 Python
django+echart数据动态显示的例子
2019/08/12 Python
python全局变量引用与修改过程解析
2020/01/07 Python
解决Pycharm 导入其他文件夹源码的2种方法
2020/02/12 Python
Django websocket原理及功能实现代码
2020/11/14 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
旷课检讨书500字
2014/10/14 职场文书
限期整改通知书
2015/04/22 职场文书
幼儿园亲子活动通知
2015/04/24 职场文书
学习党章心得体会2016
2016/01/15 职场文书
python执行js代码的方法
2021/05/13 Python
JavaScript中isPrototypeOf函数
2021/11/07 Javascript