angularjs学习笔记之三大模块(modal,controller,view)


Posted in Javascript onSeptember 26, 2015

今天主要跟大家详细讲解一下angularjs的三大模块: modal,controller,view。

首先跟大家说一下这三个模块之间的关系。

1.数据模型(modal)主要提供数据。它不会和视图(view)直接操作。

2.controller保存modal提供的数据,与视图进行操作。

3.view是视图,也就是页面展示。

4.总而言之,controller负责数据和视图之间的通信,就是两者的接口人。他们分工明确,实现了模块化。

一.如何使用数据模型(modal)?

   讲到数据模型,我们再来看一下上一节教程的例子:

<!DOCTYPE html>
 <html ng-app="app"> 
   <head>
   <meta charset="UTF-8">
   <title>Document</title>
     <script src="angular-1.2.19/angular.js"></script> <!-- 引入了AngularJS包 -->
     <script src="controll.js"></script> //引入控制器
   </head>
   <body>
     <div ng-controller="controller"> 
       <input type="text" ng-model="text">
       <b>{{greeting.text}} {{text}}</b>
     </div>
   </body>
 </html>

   1.首先引入,angularjs包,启动的时候先是去找ng-app指令,也就指定了整个的作用域;

   2.然后会继续找具体的指令,这里会找到ng-model,定义了一个“text”的数据模型。

   3.下面使用了text的这个模型,所以实现了双向绑定。(只要是在ng-app的作用域内,都能直接使用text)

二.如何使用控制器(controller)?

   首先说一下使用控制器的几个要点:

       1.不要视图复用controller,一个控制器一般只负责一小块视图(一一对应);

       2.不要在controller中直接操作DOM,这不是控制器的职责,操作DOM要使用指令derective(见上节教程);

       3.不要在controller中进行数据过滤的操作,有专门的filter服务来实现这一块;

       4.一般来说,不同的controller之间是不互相调用的,控制器的交互一般通过事件进行。

    然后我们来看上面代码蓝色的部分,controll.js的内容是:

function controller($scope){
   $scope.greeting = {
     text : 'hello'
   };
 }

    angularjs找到一个ng-controller的指令,然后会找到定义这个指令的地方,就是controll.js文件,然后可以使用greeting.text直接获取到他的值。

三.如何使用视图(view)?

    说到如何使用视图,就必须提到directive。(这里是新的知识了哟!!!!)

    下面来看一段代码:

var appModule = angular.module('app', []); //app是html中ng-app指令的名称

appModule.directive('hello', function() { //定义一个指令,名称叫hello
  return {
    restrict: 'E',
    template: '<div>Hi there</div>',
    replace: true
  };
});

   上面的代码定义了一个指令标签,你可以直接在html中试试<hello></hello>,看看会发生什么吧!!!

   然后我再讲解一下每个属性的含义:

   1.restrict :(字符串)可选参数,指明指令在DOM里面以什么形式被声明。取值有:E(元素),A(属性),C(类),M(注释);上面的例子设置为元素形式(<hello></hello>);

   2.template: (字符串或者函数)可选参数,返回的内容,上面的例子返回的是一个div;

   3.templateUrl: 同上,通过url返回内容,如果返回内容很多,则建议使用此属性。

   4.relace:(布尔值),默认值为false。上面的例子设为了true:页面使用hello标签后会被返回的div代替。

   5.transclude:(布尔值),当设为true时。这个配置选项可以让我们提取包含在指令那个元素里面的内容,再将它放置在指令模板的特定位置,与ng-transclude合用。

   6.还有一些其他属性,具体大家再慢慢了解吧。。。

OK,以上就是对这3个主要模块的使用说明了。希望对大家的学习有帮助啦。。。如果对于上面的笔记有不懂的地方,尽管问我,我肯定会给大家解答的。祝大家生活愉快!

Javascript 相关文章推荐
JavaScript数组前面插入元素的方法
Apr 06 Javascript
Eclipse引入jquery报错如何解决
Dec 01 Javascript
有关jQuery中parent()和siblings()的小问题
Jun 01 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
Jun 14 Javascript
AngularJS基础 ng-cloak 指令简单示例
Aug 01 Javascript
jquery文字填写自动高度的实现方法
Nov 07 Javascript
jQuery Ajax File Upload实例源码
Dec 12 Javascript
Vue声明式渲染详解
May 17 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
Apr 29 Javascript
基于Vue中使用节流Lodash throttle详解
Oct 30 Javascript
详解vue-router的导航钩子(导航守卫)
Nov 02 Javascript
uniapp开发小程序的经验总结
Apr 08 Javascript
JS实现可拖曳、可关闭的弹窗效果
Sep 26 #Javascript
JS实现网页Div层Clone拖拽效果
Sep 26 #Javascript
jQuery超简单选项卡完整实例
Sep 26 #Javascript
angularjs学习笔记之简单介绍
Sep 26 #Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
Sep 25 #Javascript
JS实现仿QQ效果的三级竖向菜单
Sep 25 #Javascript
微信支付如何实现内置浏览器的H5页面支付
Sep 25 #Javascript
You might like
PHP文件缓存内容保存格式实例分析
2014/08/20 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
百度小程序自定义通用toast组件
2019/07/17 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
js中位数不足自动补位扩展padLeft、padRight实现代码
2020/04/06 Javascript
python从ftp下载数据保存实例
2013/11/20 Python
python实现的一个p2p文件传输实例
2014/06/04 Python
Python中多线程及程序锁浅析
2015/01/21 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
2019/09/05 Python
手把手教你将Flask应用封装成Docker服务的实现
2020/08/19 Python
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
成品仓管员工作职责
2013/12/29 职场文书
搬家公司的创业计划书
2014/01/01 职场文书
法人任命书范本
2014/06/04 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
个人债务授权委托书
2014/10/17 职场文书
学习党章的体会
2014/11/07 职场文书
教师考核鉴定意见
2015/06/05 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
Javascript的promise,async和await的区别详解
2022/03/24 Javascript
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
2022/04/29 Servers
delete in子查询不走索引问题分析
2022/07/07 MySQL