AngularJs 基础教程 —— Angular.js为什么如此火呢

  Angular.js 是一个MV*(Model-View-Whatever,不管是MVC或者MVVM,统归MDV(model Drive View))JavaScript框架,其是Google推出的SPA(single-page-application)应用框架,其为我们的web应用开发增加不少魔法变换。

  我可以花整天的时间告诉你为什么你必须在新项目尝试angular.js,但是我觉得还是百说不如一练。

  数据绑定和scopes(作用域)

  首先第一个浮出大脑的问题是:angular支持数据绑定吗?

  下面让我们来了解angular.js的数据绑定:

  Edit in plucker

  Insert your name:

  Echo: {{user.name}}

  在这代码片段中,在我们解释细节之前,我还是希望尝试下其效果:

  注:此刻暂时不要太心急去了解ng-app。

  如你所见,我在input中输入的将会显示在后边echo。这是如何工作的?简单来说,angular的ng-model(更多关于指令的将在文章后续)给我带来了双向绑定机制。

  如此是好,但是user.name存储在哪里呢?其存储在我们的$scope上,当我们在input中输入任何字符都会及时的更新scope对象上的user.name属性。然后我们可以利用angular的表达式{{...}}现实在HTML中。所以当我们在input中输入时,其会及时更新scope上的user,name属性,在由修改HTML显示。

  好吧,这并不难,但是你所说的$scope是个什么东东呢?在angular中$scope是连接controllers(控制器)和templates(模板view/视图)的主要胶合体。我们可以把我们的model存放在scope上,来达到双向你绑定。

  这就好比:

  这意味着我们我们从template上为$scope设置了一个属性对象user.name,所以我们也可以在controller中访问这个对象(user.name).

  让我们来看个更复杂的示例:

  Edit in plunker

  var app = angular.module('app', []);

  app.controller('MainCtrl', function($scope) {

  $scope.message = 'World';

  });

  Hello, {{ message }}

  在这里首先我们定义了angular application,只是简单的创建了一个angular module,其接受一个module名字和依赖数组为参数。

  紧接着创建了一个controller,通过调用 app module的controller方法,并传入一个controller 名字和function。function函数接受$scope参数(可以接受更多的参数,放在后面部分)。所以我们可以开始双向绑定了。

  在$scope中我们附加了message的字符串属性。

  在view中你可能注意到了body tag多出了一些东东,这是干什么的?这些是angular的指令(directives),它给HTML带来了新的语法扩展,在这例子中我们使用了两个angular内置的指令:

  ng-app:它会告诉angularbody节点包含了我们的angular应用,换句话说,在body中的一切会被angular所接受管理。其参数为我们的app module的名字,和我们在javascript中命名一致。

  ng-controller:在这指令在我们传入的是controller 名字,此例中为MainCtrl。

  最后我们将message插入我们的remplate。

  所以其可视化表示将是:

  聪明的你可以会冒出一个疑问:我们能够在$scope上绑定function?

  当然。

  Edit in plunker

  var app = angular.module('app', []);

  app.controller('MainCtrl', function($scope) {

  $scope.greet = function() {

  $scope.message = "Hello, " + $scope.user.name;

  }

  });

  What's your name?:

  Click here!

  {{ message }}

  我在示例controller中很容易了解到如何添加function到$scope。示例中function将修改$scope.message为“hello ,”和从input输入的$scope.user.name的字符串连接。

  然后在HTML中创建一个附加了angular bg-click 指令的button。ng-click指令是的button在被点击时会执行我们为其赋值的greet()表达式。

  注意:在input中enter并不会工作,这是展示ng-click如何工作。

  指令

  我们已经看见了一些指令了,指令是个什么东东?

  指令为HTML引入了新的语法。HTML已经很强大了,但是有时我需要更多...

  看下面的例子:

  示例代码在做什么?除了看见id外,我真的什么也不能获知。

  然后我们只得从多余30个javascript文件中去查找,最后我们看见如下代码:

  $('#chart').pieChart({ ... });

  Aha!原来是个饼图(pie chart)容器。

  在这里如果你不去查找javascript文件将无法获知页面到底是做什么的,实现了什么功能。

  下面我们再来看看angular code,

  是不是语义很清晰,我们可以一眼看出这是一个pie chart,不仅如此,而且还知道width,height,以及其数据。

  如果你对pie chart 示例感兴趣,请猛击这里

  angular内置指令

  angular给我带来了大量的内置指令。我们已经在前面看见了ng-app,ng-controller,ng-click,ng-model(angular的内置指令都以ng开始),接下来让我了解更多的内置指令。

  有时在页面中有部分内容我们只希望到达某状态(属性为true)才显示:

  Edit in plunker

  Show

  I am only visible when show is true.

  ng-show仅当angular其表达式值为true时,才显示该元素或子元素。

  注意:在这里对于ng-click我们并不是直接在controller中创建function(此刻我们没真正的controller),利用angular表达式作为指令的参数。在首次表达式为undefined,然后我们设置为为true,在false如此交替。

  angular同时也提供了ng-hide指令。

  让我们看些更有趣的指令,如果有个List或者数组呢?

  Edit in plunker

  var app = angular.module('app', []);

  app.controller('MainCtrl', function($scope) {

  $scope.developers = [

  {

  name: "Jesus", country: "Spain"

  },

  {

  name: "Dave", country: "Canada"

  },

  {

  name: "Wesley", country: "USA"

  },

  {

  name: "Krzysztof", country: "Poland"

  }

  ];

  });

  {{person.name}} from {{person.country}}

  棒极了,我们在controller中定义了一个list对象,在HTML用ng-repeat就能简单的显示了。

  它是如何工作的?

  ng-repeat会为集合中的每一项创建一个新的模板,在示例中有四项数据,将会重复创建下面code四次,

  {{person.name}} from {{person.country}}

  每次复制都会创建自己新的scope,我们没有为每项手动创建scope,我们可以把scope理解为其scope,但是在这里我们仍然能够访问父scope。

  可视化的展示为:

  我们能自定义directive?

  当然,我们能以不同粒度方式创建angular的directive,例如modal dialogs accordions, paginators, charts,search from ...

  angular指令总是与可视化有关?不,我们仍然可以创建一些非可视化的指令集。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的海滨体育馆管理系统,源码+数据库+毕业论文+视频演示 本基于Spring Boot的海滨体育馆管理系统设计目标是实现海滨体育馆的信息化管理,提高管理效率,使得海滨体育馆管理工作规范化、高效化。 本文重点阐述了海滨体育馆管理系统的开发过程,以实际运用为开发背景,基于Spring Boot框架,运用了Java技术和MySQL作为系统数据库进行开发,充分保证系统的安全性和稳定性。本系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,实现了海滨体育馆相关信息管理的重要功能。 本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高海滨体育馆管理效率。 关键词:海滨体育馆管理,Java技术,MySQL数据库,Spring Boot框架 本基于Spring Boot的海滨体育馆管理系统主要实现了管理员功能模块和学生功能模块两大部分,这两大功能模块分别实现的功能如下: (1)管理员功能模块 管理员登录后可对系统进行全面管理操作,包括个人中心、学生管理、器材管理、器材借出管理、器材归还管理、器材分类管理、校队签到管理、进入登记管理、离开登记管理、活动预约管理、灯光保修管理、体育论坛以及系统管理。 (2)学生功能模块 学生在系统前台可查看系统信息,包括首页、器材、体育论坛以及体育资讯等,没有账号的学生可进行注册操作,注册登录后主要功能模块包括个人中心、器材管理、器材借出管理、器材归还管理、校队签到管理、进入登记管理、离开登记管理、活动预约管理。
毕业设计,基于SpringBoot+Vue+MySQL开发的学科竞赛管理系统,源码+数据库+毕业论文+视频演示 随着国家教育体制的改革,全国各地举办的竞赛活动数目也是逐年增加,面对如此大的数目的竞赛信息,传统竞赛管理方式已经无法满足需求,为了提高效率,竞赛管理系统应运而生。 本学科竞赛管理系统以实际运用为开发背景,基于Spring Boot框架、Vue框架,运用了Java语言和MySQL数据库进行开发设计,充分保证系统的安全性和稳定性。本系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,实现了学科竞赛管理的重要功能。 本学科竞赛管理系统运行效果稳定,操作方便、快捷,界面友好,是一个功能全面、实用性好、安全性高,并具有良好的可扩展性、可维护性的学科竞赛管理平台。 关键词:学科竞赛管理,Java语言,MySQL数据库,Vue框架 此学科竞赛管理系统的设计与实现功能分析主要分为管理员功能模块和学生功能模块两大模块,下面详细介绍这两大模块的主要功能: (1)管理员:管理员登陆后可对系统进行全面管理,管理员主要功能模块包括个人中心、学生管理、教师管理、赛项信息管理、赛项报名管理、奖项统计管理、管理员管理以及系统管理,管理员实现了对系统信息的查看、添加、修改和删除的功能。 (2)学生:学生进入本学科竞赛管理系统的设计与实现前台可查看系统信息,包括首页、赛项信息以及新闻资讯等,注册登录后主要功能模块包括个人中心和赛项报名管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值