很久以前就听人说起angularjs,但一直都没有深入了解过。直到最近才在自己心里有了一个准确的定义。和相濡以沫多年的函数库JQuery相比,angular更像一个框架。对,就是一个框架,相比之下的话同样是前端开发框架的Ext就应该是一个胖子,而angular就是一个瘦子。Ext提供了一套几乎可以不写Html和Css就能创造页面的解决方案,除此之外还包括页面的逻辑和数据处理方案。angular则只提供了页面逻辑和数据处理的方案。也许和Ext相比它算是一个“不健全的”前端框架,但这也大大的提高了框架使用的灵活性。

我是怎么入门的?

  了解类似框架,最头疼的是找不到好的突破口。很多时候我们都希望能看到一个简单的案例,通过案例可以对框架有一个清晰的认识。在github上有个angular-seed的代码库,以一个最简单的案例介绍了angular打开方式。附代码地址:https://github.com/angular/angular-seed.git

  悄悄的说一下,如果使用WebStorm做开发,在创建项目的时候可以选择AngularJs,WebStorm会自动下载angular-seed。就像.Net程序员在创建MVC项目的时候VS会自动填充一些基础代码。

  安装好的项目结构如下:

  项目介绍:

  红色框选部分是重点,新手可以忽略其他文件。

  这是一个单页应用,index.html是页面入口,app.js是angularjs配置文件。

  所以在访问的时候我们应该访问的是:http://xxx.xxx.xxx/index.html

  components -- 组件

  view -- 存储视图(内容页)和 viewmodel(view.js) 。

      view.js包含路由(页面的访问路径配置)和控制器(controller)。

      页面中需要用到的变量等相关信息需要在controller中配置。

      目前是空的

  view1和view2分别存储的是两个视图,运行后访问index.html即可访问。

  

  

  

重点照顾对象:

  app.js

    app.js中angular.model函数的第二参数是一个数组,这个数组里列举的内容便是整个项目运行时依赖内容,比如:view1.js,view1.js中定义的angular.model名称为myApp.view1,可以将其理解为是view1.js这个模块的命名空间,那么在设置app.js的时候就需要加入这个命名空间。如果新建一个myApp.view10那么app.js里便需要加入对myapp.view10的引用。

    除此之外app.js里还设置了一个默认地址otherwise,这个有点404的感觉,当找不到对应页面的时候就会跳转到这个地址上,这里默认的是view1。所以在访问index.html的时候会直接访问到view1.html。

    请注意,app.js里$routeProvider.otherwise({redirectTo:'/view1'}),这里的/view1并不是view1.html,而是路由配置表里的一个路径/view1,而在view1.js中将这个路径指向了view1.html。这两者的对应关系是建立在页面路由上的。

  index.html

    这是一个看似简单却暗藏玄机的页面。首先是这一句<div ng-view></div>, ng-view指令表示,所有页面都将在这里展示,感觉就像老朋友iframe。

    除此之外页面上所需要的js资源都需要在这里加载

  

 关于Hello Word:

  上效果~~

  下面是对view1.html的修改和运行结果。

<p>This is the partial for view 1.</p>
<input type="text" ng-model="word">
<h3>{{word}}</h3>

 

  js代码呢?噢,对不起,我没改js。是的,就这么简单,并不需要修改js文件。

  这一点和knockout有点像(也许是knockout和angular有点像,至于谁先谁后就不去考究了,反正我是先用knockout)。代码中的word是一个变量,我们将这个变量和input进行了绑定ng-model="word"然后再下面进行输出{{word}},如果要在js里获取就应该是这样:

view1.js:

'use strict';

angular.module('myApp.view1', ['ngRoute'])

.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/view1', {
templateUrl: 'view1/view1.html',
controller: 'View1Ctrl'
});
}]) .controller('View1Ctrl', [function() {
var word= this.word;
}]);

在controller中使用this.word可获取或设置页面上的word的值。

接下来再叨叨一个常用的指令ng-repate。这次对view2进行如下修改,上图文~~

view2.html:

<p>This is the partial for view 2.</p>

<h2>ng-repeat部分</h2>
<div ng-repeat="item in list">
这是{{item}} 它的index是:{{$index}}
</div>

view2.js:

'use strict';

angular.module('myApp.view2', ['ngRoute'])

.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/view2', {
templateUrl: 'view2/view2.html',
controller: 'View2Ctrl'
});
}]) .controller('View2Ctrl', ['$scope',function($scope) {
$scope.list=["item1","item2","item3","item4"];
}]);

  

js:

  controller中对模块的引用方式很特殊,在controller的第二个参数里,前面是要引用的模块名称,最后一个元素是一个函数,函数里的参数代表引用模块。这里的$scope(作用域,可以理解为程序上下文)它是angular应用程序中视图(HTML)和控制器(JavaScript)之间的纽带 ,主要是在控制器和页面之间进行数据传递。所以我们可以把list传递到页面中使用。 值得一提的是,当list内容发生变化的时候,页面内容也会自动刷新。

html:

  item指list中的元素,{{item}}是在页面打印这个元素,item可以是字符串,对象,数组......,反正它可以很复杂。$index是当前循环的索引编号,等同for(var i=0....中的i。

到这里大家对angularjs应该是有一个基本概念了。想要了解更多关于angulajs的控制器、内置指令等相关信息,请 百度 或 谷歌一下。

AngularJs之初的更多相关文章

  1. day21—AngularJS学习初体验

    转行学开发,代码100天——2018-04-06 今天按照学习计划安排,开始AngularJS的学习. 关于AngularJS,在菜鸟教程上这样介绍 好吧,Angular学习起来非常简单,哈哈,现在就 ...

  2. angularjs入门初体验

    1. http://www.zouyesheng.com/angular.html#toc39

  3. AngularJS 初用总结

    一直用惯jquery,初用Angularjs的初段时间,需要先了解一下她的类MVC思想. 初学时几个比较基本的概念: 1.客户端模板 2. Model View Controller (MVC) 3. ...

  4. AngularJS路由系列(3)-- UI-Router初体验

    本系列探寻AngularJS的路由机制,在WebStorm下开发. AngularJS路由系列包括: 1.AngularJS路由系列(1)--基本路由配置2.AngularJS路由系列(2)--刷新. ...

  5. angularJs初体验,实现双向数据绑定!使用体会:比较爽

    使用初体验:ng 双向数据绑定: 最简单的双向数据绑定:(使用默认模块控制) <body ng-app> <input type="text" ng-model= ...

  6. AngularJS 初印象------对比 Asp.net MVC

    之前就早耳闻前端MVC的一些框架,微软自家的Knockout.js,google家的AngularJs,还有Backone.但未曾了解,也不解为什么前端也要这么分.这两天看了AngularJs的官方教 ...

  7. AngularJS初体验

    最近突然发现,Coding.net真是一个神奇的网站.这各网站90%的请求都是通过ajax完成的.可以发现,不管你点任何链接,网页都不会刷新,点击浏览器的返回或前进按钮也是这样,打开chrome的开发 ...

  8. MVC + AngularJS 初体验(实现表单操作)

    AngularJS AngularJS 通过新的属性和表达式扩展了 HTML. AngularJS 可以构建一个单一页面应用程序(SPAs:Single Page Applications). Ang ...

  9. AngularJS自定义Directive初体验

    通常我们这样定义个module并随之定义一个controller. var app = angular.module('myApp', []); app.controller('CustomersCo ...

随机推荐

  1. MyBetis3.2框架技术

    1.1    MyBatis介绍 MyBatis 世界上流行最广泛的基于SQ语句的ORM框架,由Clinton Begin 在2002 年创建,其后,捐献给了Apache基金会,成立了iBatis 项 ...

  2. Java面试题04-final关键字详解

    Java面试题04-final关键字详解 本篇博客将会讨论java中final关键字的含义,以及final用在什么地方,感觉看书总会有一些模糊,而且解释的不是很清楚,在此做个总结,以备准备面试的时候查 ...

  3. kindeditor修改图片上传路径-使用webapi上传图片到图片服务器

    kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 在这里我着重介绍一些使用kindeditor修改图片上传路径并通过webapi上传图片到图片服务器的方案. 因为我使用的 ...

  4. yii2 advance安装

    转载自:http://www.genshuixue.com/i-cxy/p/7986531 1. 前提条件,php版本得> 5.4D:\phpStudy>php -v PHP 5.5.17 ...

  5. Unity 相机的聚焦功能

    摘要:本文原创,转载请注明出处 需求: 在游戏的任务编辑场景进行编辑的时候,摄像机需要在多个需要编辑的物体之间来回切换,如果只是用摄像机的移动旋转,对于相对位置较近的物体还好说,当相对位置过远的时候, ...

  6. 三步快速解决dll冲突问题

    最近在推广应用我们的分布式服务网关(Web Api):业务组大部分对外的业务逻辑以HSF服务或者自定义扩展插件的方式,注册并发布到分布式服务网关中,统一对外提供WebApi服务.临时介绍下我们的分布式 ...

  7. 架构设计之Spring-Session分布式集群会话管理

    前言 通常在web开发中,回话管理是很重要的一部分,用于存储与用户相关的一些数据.对于JAVA开发者来说,项目中的session一般由Tomcat或者jetty容器来管理. 特点介绍 尽管使用特定的容 ...

  8. Fullcalendar 日历控件的基本使用

    1:Fullcalendar 日历控件的基本简介 Fullcalendar是一款十分强大的开源日历免费控件,提供了丰富的属性设置和方法调用. 官网地址:https://fullcalendar.io/ ...

  9. 七牛整合 ueditor (拦住那头牛,七牛又如何)

    最近遇到个项目,要求所有图片都必须整合到七牛上,看了把你谈文档踩在前辈们的基础上终于把他完成了,恰巧本屌丝最近刚好有时间,本着天下屌丝是一家的原则,和小朋友们一同学习 闲话少说入正题. 第一 :下载编 ...

  10. C# Webclient 和 Httpclient如何通过iis authentication 身份验证。

    前言: 该博客产生的背景是客户那边有部署网站的方法是iis windows authentication身份验证,而系统中使用Webclient来调用别的系统的方法.在此情况下,原本可以使用的功能,都 ...