angularjs指令系统系列课程(5):控制器controller
这一节我们来说一下controller这个参数
一.指令控制器的配置方法:
对于指令我有两种配置路由的方式:1.在html中直接引用,2,在指令的controller参数里定义
第一种:在html中直接引用
我定义一个controller:其中newsApp为我自定义的app模块。
js:controller
var newsApp=angular.module('newsApp',{});
newsApp.controller('ForDirective', function() {
alert("this is a directive controller");
});
js:directive
newsApp.directive('helloDirective', function() {
return {
}
});
html
<section>
<div hello-directive ng-controller="ForDirective"></div>
</section>
这种方式大家都很熟悉
第二种:在指令的controller参数里定义
可取值:string或者function
该controller可以是已经定义在app上的一个controller,比如:{controller:'ForDirective'}
也可以是匿名函数,及:{controller:function(){}}
该controller是对所有其他指令共享的,自定义的其他指定均可以调用其中的一些方法
还是刚刚的例子,我切换为在指令里设置controller
js:directive
newsApp.directive('helloDirective', function() {
return {
controller:'ForDirective'
}
});
或者:
newsApp.directive('helloDirective', function() {
return {
controller: function() {
alert("this is a directive controller");
}
}
});
html:
<section>
<div hello-directive></div>
</section>
二.指令控制器的常用依赖服务
指令控制器,可以注入任意可以被注入的ng服务。我们介绍一些服务来了解下他们的作用
1.$scope
指令当前作用域
2.$attrs
指令作用Dom元素的属性集合对象
这个属性集其实就是把元素的属性和值封装为一个json对象:{id:'obj',name:'myname'}
3.$element
指定作用的Dom元素
可以理解为jquery里面的$('#id')
4.$transclude
在使用该嵌入链接函数时,一定要先将transclude参数设置为true,不然$transclude会为undefind
我们看一个例子:
js:directive
newsApp.directive('helloDirective', function() {
return {
transclude: true,
controller: function($element, $transclude) {
$transclude(function(clone) {
$element.append(clone);
});
}
}
});
html
<section>
<div hello-directive>
这是原先的内容
</div>
</section>
运行效果:
查看源码:
我们没有在指令模板里加入带 ng-transclude的元素,但是 原先的内容依旧输出,
我们来分析一下:
首先,参数transclude:true,就是告知要嵌入以前的内容,这样 指令作用的dom元素就被clone了一份保留下来,保留在$transclude的回掉函数的参数clone里面,clone这个实体就是被保留的元素。
我们在controller里面又将其添加到页面中,于是实现了那种效果
对$scope,$element,$attrs,$transclude的综合应用能使我们自定义指令做成很方便我们使用的组件
angularjs指令系统系列课程(5):控制器controller的更多相关文章
- angularjs指令系统系列课程(1):目录
angularjs里面有一套十分强大的指令系统 比如内置指令:ng-app,ng-model,ng-repeat,ng-init,ng-bind等等 从现在开始我们讲解AngularJS自定义指令, ...
- angularjs指令系统系列课程(4):作用域Scope
指令的scope对象是一个很重要,很复杂的对象,我们这一节作为重点讲解 可取值: 1.false(默认), 2.true, 3.{}(object) 1.false:默认值,不创建新的作用域 2.tr ...
- angularjs指令系统系列课程(3):替换replace,内容保留transclude,作用方式restrict
这一节我们主要看一下replace,transclude,restrict这三个参数 1.replace 可取值:bool 默认为:true 对于replace属性,设置为false表示原有指令标识不 ...
- angularjs指令系统系列课程(2):优先级priority,模板template,模板页templateUrl
今天我们先对 priority,template,templateUrl进行学习 1.priority 可取值:int 作用:优先级 一般priority默认为0,数值越大,优先级越高.当一个dom元 ...
- Angularjs在控制器(controller.js)的js代码中使用过滤器($filter)格式化日期/时间实例
Angularjs内置的过滤器(filter)为我们的数据信息格式化提供了比较强大的功能,比如:格式化时间,日期.格式化数字精度.语言本地化.格式化货币等等.但这些过滤器一般都是在VIEW中使用的,比 ...
- AngularJS进阶(九)控制器controller之间如何通信
AngularJS控制器controller之间如何通信 注:请点击此处进行充电! angular控制器通信的方式有三种: 1,利用作用域继承的方式.即子控制器继承父控制器中的内容 2,基于事件的方式 ...
- Angularjs 控制器controller的作用
我们在view中给模型的一个参数name赋值 “hello world” . 这是一种简单的赋值,我们可以在视图中通过 ng 指令(以ng-开头的指令)实现了简单的赋值,如果遇到复杂的逻辑运算操作,那 ...
- ASP.NET MVC框架开发系列课程 (webcast视频下载)
课程讲师: 赵劼 MSDN特邀讲师 赵劼(网名“老赵”.英文名“Jeffrey Zhao”,技术博客为http://jeffreyzhao.cnblogs.com),微软最有价值专家(ASP.NET ...
- AngularJS路由系列(2)--刷新、查看路由,路由事件和URL格式,获取路由参数,路由的Resolve
本系列探寻AngularJS的路由机制,在WebStorm下开发.主要包括: ● 刷新路由● 查看当前路由以及所有路由● 路由触发事件● 获取路由参数 ● 路由的resolve属性● 路由URL格式 ...
随机推荐
- msysgit之git bash方便的复制粘贴,默认工作目录,窗口大小,提高速度等小窍门
桌面图标点鼠标右键,选择属性,修改工作目录到自己的git目录: 打开快速编辑,这时候鼠标左键可以随意选取文本,enter键复制.鼠标右键是粘贴.另外,粘贴的快捷键是 inerst键 修改默认窗口大小 ...
- sqlite简单使用
c创建表: create table 表名称(元素名称 类型,,,): 插入数据:insert into 表名称 values(null,,,) 修改数据 : update 表名 set 字段=’ ...
- PHP 返回JSON
有个朋友说PHP不能返回JSON对象,作为.net的我认为应该是可以的,设置一下header 就行了. 果不然,google 一下,备忘如下: <?php $result = array('Na ...
- kzalloc 函数详解(转载)
用kzalloc申请内存的时候, 效果等同于先是用 kmalloc() 申请空间 , 然后用 memset() 来初始化 ,所有申请的元素都被初始化为 0. view plain /** * kzal ...
- 约在CBD,吃饭
午饭当然是外卖. CBD上班的同仁们不用约,都去了一间叫“大食堂”的餐厅. 它在商业街繁华地段的二楼,有1000平米.你不知道么,餐馆们都躲到找不着的角落,变成了厨房,这里的租金便宜得很.但它不做饭, ...
- web 项目 连接mycat 读写分离失效问题,
问题描述:mycat 读写分离已配好,在sql工具上查询操作是可以的,但是在项目中,读数据就走write 数据库, 解决 :环境spring +mvc +ibaites,在java中自己写j ...
- JAVA中的异常及处理异常的方法
异常 这是我老师的喜好:就是说一上来就拿一张图给大家看看,过过瘾-_- 这是一张: 异常分类图 来,这里还有一张带中文的常见异常截图!!! 1:先来说说什么是异常吧: 其实就是"阻止当前方法 ...
- android 官方文档 JNI TIPS
文章地址 http://developer.android.com/training/articles/perf-jni.html JNI Tips JNI is the Java Native I ...
- 安装 whmcs
1.下载下来后(自己百度网盘),用scp 上传, 在网站能访问的地方新建目录,例如 whmcs 目录,解压到内 2.网站访问 http://ip/whmcs/index.php 提示需要安装 ionc ...
- 如何使用查尔斯代理抓取https请求
首先 查尔斯代理是一个很不错的抓包工具 有适合各种系统的版本 最近http的请求几乎铺天盖地的已经变为了https了 其中的好处有很多 更加安全(http://www.cnblogs.com/lo ...