angularjs 学习笔记1

第一次听到angularjs 是在和朋友的一次聊天当中。当时我们讨论的话题是目前流行的js框架。因为朋友是做前端的他偶然说起angularjs问我听过没。当然也不懂是干什么的。朋友说就是用来绑定数据的。我的第一感觉就是那跟knockout  差不多嘛。也就没有去深入了解过。直到在一次项目中遇到页面逻辑非常复杂的情况。那时的页面非常复杂而且逻辑很多。写起来逻辑和层次很混乱。当时我就在想有没有一个前段的框架能像后端的MVC一样进行业务逻辑的分层呢?

于是抱着这个疑问去google上搜索。于是乎发现了angular 。我说这不是之前谈到过的那个框架吗?深入了解发现这他么太NB了。一看居然是google出品。瞬间觉得这是个神器 啊。简直就是为后端开发人员而生的前端js框架。 废话也不多说了直接上代码。如果你使用过类似knockout的js框架的话。一眼就能看懂下面代码的意思。

先是直接引用js

//这里写贴出来一个最简单的angular 应用的结构<html ng-app>//这里有个ng-app 你先不用知道这是干什么的。先理解为作用域
    <head>
        <script src="http://code.angularjs.org/angular-1.0.1.min.js"></script>
    </head>
    <body>
        Hello {{‘World‘}}!
    </body>
</html>
//双引号是angular的模板语法。可以在任何地方插入数据

下面我说下angular的层次结构 它分为"控制器(controller)","行为(behavior)","视图(view)","服务(services)","模型(model)",到这我相信做过后端开发的肯定秒懂。这就是MVC嘛。对这就是MVC 跟我们开发后端程序的思想是一致的。

现在我们继续往下说先说最核心的东西控制器 把上面的代码进行改造如下

<body ng-app="controllerAsExample">
<div id="ctrl-as-exmpl" ng-controller="SettingsController1 as settings">
  Name: <input type="text" ng-model="settings.name"/>
  [ <a href="" ng-click="settings.greet()">greet</a> ]<br/>
  Contact:
  <ul>
    <li ng-repeat="contact in settings.contacts">
      <select ng-model="contact.type">
         <option>phone</option>
         <option>email</option>
      </select>
      <input type="text" ng-model="contact.value"/>
      [ <a href="" ng-click="settings.clearContact(contact)">clear</a>
      | <a href="" ng-click="settings.removeContact(contact)">X</a> ]
    </li>
    <li>[ <a href="" ng-click="settings.addContact()">add</a> ]</li>
 </ul>
</div>
angular.module(‘controllerAsExample‘, [])
  .controller(‘SettingsController1‘, SettingsController1);

function SettingsController1() {
  this.name = "John Smith";
  this.contacts = [
    {type: ‘phone‘, value: ‘408 555 1212‘},
    {type: ‘email‘, value: ‘[email protected]‘} ];
}

SettingsController1.prototype.greet = function() {
  alert(this.name);
};

SettingsController1.prototype.addContact = function() {
  this.contacts.push({type: ‘email‘, value: ‘[email protected]‘});
};

SettingsController1.prototype.removeContact = function(contactToRemove) {
 var index = this.contacts.indexOf(contactToRemove);
  this.contacts.splice(index, 1);
};

SettingsController1.prototype.clearContact = function(contact) {
  contact.type = ‘phone‘;
  contact.value = ‘‘;
};

在上面的代码中我们创建了一个模块,模块名字叫做"controllerAsExample" 这个模块的作用是通过"依赖注入的"方式调用这个控制器。而 控制器的作用范围是通过。“行为”在dom元素上打上“ng-controller” 来指定的。 在控制器内部我们可以自定义方法和模型。模型是用来存储数据的目前可以这样去理解。而方法就是类似于MVC的action来理解。action通过调用“服务”来获取数据填充到“模型”。 模型通过双向绑定的方式展示页面。页面的效果通过“行为来控制”,大概就是这么一个流程。

关于angular的分层结构一般是这样的。

templates/
    _login.html
    _feed.html
app/
    app.js
    controllers/
        LoginController.js
        FeedController.js
    directives/
        FeedEntryDirective.js
    services/
        LoginService.js
        FeedService.js
    filters/
        CapatalizeFilter.js

但是我个人建议的结构是按照模块进行分层

app/
    app.js
    Feed/
        _feed.html
        FeedController.js
        FeedEntryDirective.js
        FeedService.js
    Login/
        _login.html
        LoginController.js
        LoginService.js
    Shared/
        CapatalizeFilter.js

在上面的介绍和说明中只是。大概的介绍了下angularjs 的大概结构和一些基本的语法。后期我会继续按每一个部分进行说明。比如控制器,服务等。以上就是我个人对angularjs 的理解和说明。如有不足之处请指出。谢谢。

时间: 2024-10-10 21:34:38

angularjs 学习笔记1的相关文章

angularjs学习笔记—事件指令

angularjs学习笔记—事件指令 小俞 4.4k 3月30日 发布 推荐 4 推荐 收藏 17 收藏,11.1k 浏览 ngClick 适用标签:所有触发条件:单击 #html <div ng-controller="LearnCtrl"> <div ng-click="click()">click me</div> <button ng-click="click()">click me<

angularjs 学习笔记(一) -----JSONP跨站访问

1.  下载angular-seed-master-master包,解压缩后将新版本的angularJS文件放入其中. 2.  制作frontmockup文件夹(前端调用),同时制作backmockup文件夹(后端调用),使用IIS开启2个webserver(此步骤可以用其他方式替代). 3.  backmockup站点添加以下HTTP头 Access-Control-Allow-Credentials:true Access-Control-Allow-Headers:origin,x-req

angularjs 学习笔记 -----结构定义

1.  Module使用方法 var APP =angular.module('fontApp',['ngResource', 'ngRoute', 'ngSanitize']); APP为定义的别名,之后的调用都应尽量使用该别名 'fontApp' ng-app="fontApp" 新版本angular中route被分离出来,各个被使用的Providerdou需要在此处声明. 大型应用应该拆分模块来做,先定义一个服务模块,然后再加载它 angular.module('xmpl.ser

angularjs 学习笔记(二) ----- bootstrap框架

1.  下载新的jquery-1.11.1文件. 2.  下载新的bootstrap文件. 3.  选择流式布局的模板填充入index.html文件. 4.  将top.foot转为nginclude文件 nginclude必须使用$scope对象,因此需要设置一个全局的mainctrl来将字符串或全局变量注入$cope中. $rootScope.global =global; 直接将全局变量global赋值给$rootScope,并且之后的子$Scope会获得继承,静态定义与ctrl分开. 5

-_-#AngularJS学习笔记

AngularJS学习笔记 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <style> .done{display:none} .ignore{color:#999} </style> <ul> <li class="

AngularJs学习笔记--directive

原版地址:http://code.angularjs.org/1.0.2/docs/guide/directive Directive是教HTML玩一些新把戏的途径.在DOM编译期间,directives匹配HTML并执行.这允许directive注册行为或者转换DOM结构. Angular自带一组内置的directive,对于建立Web App有很大帮助.继续扩展的话,可以在HTML定义领域特定语言(domain specific language ,DSL). 一.在HTML中引用direc

AngularJs学习笔记--Guide教程系列文章索引

在很久很久以前,一位前辈向我推荐AngularJs.但当时我没有好好学习,仅仅是讲文档浏览了一次.后来觉醒了……于是下定决心好好理解这系列的文档,并意译出来(英文水平不足……不能说是翻译,有些实在是看不懂,希望大家在参观的过程中指出其中的错误).经过1个多月断断续续的努力,终于把Guide里面的文章基本上都弄出来.Guide中的部分章节,由于重复的部分似乎有点多,而且篇幅较短,这里就没有列出来. 文章列表如下: AngularJs学习笔记--bootstrap AngularJs学习笔记--ht

AngularJS学习笔记filter

filter是对数据进行过滤操作,比如按某个字段搜索.格式化数据等等,是一个非常有用的接口.下面就简单介绍下它的用法. AngularJS自带的filter接口,|是filter的分隔符,参数用:分隔: currency,格式化number,货币化,默认是转化成美元  param(number,symbol),返回值将会把数字每3位加一个逗号 <input type="number" ng-model="amount"/> <p>默认美元:{

AngularJS 学习笔记 -- 指令(Directive)

AngularJS 指令学习笔记 AngularJS怎样处理指令其实是依赖于指令定义时返回的对象属性的,所以要想深入理解如何定义一个指令,首相需要理解指令定义时各个参数的含义. 完整的AngularJS指令参数 angular.module('app', []) .directive('demoDirective', function (){ // 依据官方规范,指令的定义时应该严格遵循驼峰式命名规则,使用时采用'-'连接单词 return { restrict : String in ['E'

AngularJs学习笔记(制作留言板)

原文地址:http://www.jmingzi.cn/?post=13 初学Anjularjs两天了,一边学一边写的留言板,只有一级回复嵌套.演示地址 这里总结一下学习的过程和笔记.另外,看看这篇文章也是会有收获的. 我觉得AngularJs就是实现了php的很多功能和方法,除了不能直接操作数据库以外,他有很多插件可以提供使用,很强大. 我遇到的问题: 1.使用$http.post()方法提交到php的时候,php的接收语句是这样的: 1 $shuju = file_get_contents('