我也谈 AngularJS 怎么使用Directive, Service, Controller
原文地址:http://sunqianxiang.github.io/angularjs-zen-yao-shi-yong-directiveservicecontroller.html
其转自大漠穷秋,这是对于初学者来说 讲的非常好的入门文
在有关于 Directive,Service,Controller 时候先看一下图
这是我画出来帮助理解的,并不代表angularjs走这种逻辑。 不过在本例的确是这样的。 ========= 首先你需要先去定义你的module.
var Mymodule = angular.module('My.Alex.module', []);
html标记也记得修改哦
<html ng-app="My.Alex.module">
在这里我们先定义Service服务,本例是一个简单的图片添加的模式,数据跟add方法都在Service。这样有助于解耦。
Mymodule.service( 'Book',[ '$rootScope',function($rootScope){
    var service = {
        books: [
           { title: "Magician", author: "Raymond E. Feist" },
           { title: "The Hobbit", author: "J.R.R Tolkien" }
        ],
        addBook: function(book){
            service.books.push(book);
            $rootScope.$broadcast('books.update');
        }
    }
    return service;
}]);
在这里可以看出我定义了一个Book服务, 然后我现在要在controller添加他,来使用Book里面的数据。
Mymodule.controller("books.list",['$scope','Book',function(scope,Book){
            scope.$on('books.update',function(event){
                scope.books = Book.books;
                scope.$apply(); #必须加,不然数据不更新
            });
            scope.books = Book.books;
        }]);
这里在controller里面定义服务更新的方法,其主要是更新scope. $broadcast 跟$on 对应使用
module.directive( "addBookButton", [ 'Book', function( Book ) {
return {
    restrict: "A",
        link: function( scope, element, attrs ) {
        element.bind( "click", function() {
            Book.addBook( { title: "Star Wars", author: "George Lucas" } );
        });
    }
}
}]);
然后我添加一个directive来让button可以添加书本。 这是一个bind的过程,剩下只要添加 到body里面就完成了
<body ng-controller="books.list">
<li ng-repeat="book in books">
<ul>{{book.title}}, {{book.author}}</ul>
</li>
<button add-book-button>Add book</button>
</body>
至此,可以得到一个上面所画的一个基本逻辑代码。 其主要部分也就这4块。其实service还可以传递给filter。
我也谈 AngularJS 怎么使用Directive, Service, Controller的更多相关文章
- AngularJS中使用Directive、Controller、Service
		AngularJS是一款非常强大的前端MVC框架.同时,它也引入了相当多的概念,这些概念我们可能不是太熟悉. (1)Directive 指令 (2)Controller 控制器 (3)Service ... 
- AngularJS:何时应该使用Directive、Controller、Service?
		AngularJS:何时应该使用Directive.Controller.Service? (这篇文章你们一定要看,尤其初学的人,好吗亲?) 大漠穷秋 译 AngularJS是一款非常强大的前端MVC ... 
- 再谈angularJS数据绑定机制及背后原理—angularJS常见问题总结
		这篇是对angularJS的一些疑点回顾,是对目前angularJS开发的各种常见问题的整理汇总.如果对文中的题目全部了然于胸,觉得对整个angular框架应该掌握的七七八八了.希望志同道合的通知补充 ... 
- AngularJs学习笔记--directive
		原版地址:http://code.angularjs.org/1.0.2/docs/guide/directive Directive是教HTML玩一些新把戏的途径.在DOM编译期间,directiv ... 
- 何时应该使用Directive、Controller、Service?
		AngularJS:何时应该使用Directive.Controller.Service? 大漠穷秋 译 AngularJS是一款非常强大的前端MVC框架.同时,它也引入了相当多的概念,这些概念我们可 ... 
- AngularJs学习笔记--Managing Service Dependencies
		原版地址:http://docs.angularjs.org/guide/dev_guide.services.managing_dependencies angular允许service将其他ser ... 
- angularjs中的directive scope配置
		angularjs中的directive scope配置 定义directive其中重要的一环就是定义scope,scope有三种形式: 默认的scope,DOM元素上原有的scope scope: ... 
- angularJS中directive与controller之间的通信
		当我们在angularJS中自定义了directive之后需要和controller进行通讯的时候,是怎么样进行通讯呢? 这里介绍3种angular自定义directive与controller通信的 ... 
- AngularJS入门心得1——directive和controller如何通信
		粗略地翻了一遍<JavaScript DOM编程艺术>,就以为可以接过AngularJS的一招半式,一个星期过去了,我发现自己还是Too Young,Too Simple!(刚打照面的时候 ... 
随机推荐
- jsp之用户自定义标签
			创建一个类,引入外部jsp-api.jar包(在tomcat 下lib包里有),这个类继承SimpleTagSupport 重写doTag()方法. jspprojec包下的helloTag类: pu ... 
- 有关android安全性的问题--代码混淆
			转自:http://www.cnblogs.com/dream-sky/archive/2012/11/15/2771648.html 在project.properties里加上 proguar ... 
- ZOJ	1967  POJ  2570  Fiber Network
			枚举起点和公司,每次用DFS跑一遍图,预处理出所有的答案.询问的时候很快就能得到答案. #include<cstdio> #include<cmath> #include< ... 
- YII2  请求(request)
			请求 一个应用的请求是用 yii\web\Request 对象来表示的,该对象提供了诸如 请求参数(译者注:通常是GET参数或者POST参数).HTTP头.cookies等信息. 默认情况下,对于一个 ... 
- git基本命令--tag, alias,
			git tag: 列出标签 在 Git 中列出已有的标签是非常简单直观的. 只需要输入 git tag: $ git tag v0. v1. 这个命令以字母顺序列出标签:但是它们出现的顺序并不重要. ... 
- java中的equals()方法
			大家都知道,在Java中,对于对象的比较,如果用“==”比较的是对象的引用,而equals才是比较的对象的内容. 一般我们在设计一个类时,需要重写父类的equals方法,在重写这个方法时,需要按照以下 ... 
- IoC容器Autofac正篇之类型关联(服务暴露)(八)
			类型关联 类型关联就是将类挂载到接口(一个或多个)上去,以方便外部以统一的方式进行调用(看下例). 一.As关联 我们在进行手动关联时,基本都是使用As进行关联的. 1 2 3 4 5 6 7 8 ... 
- find the closest sum to a target value
			problem: given an array of integers including positive and negative, a target value. find 2 numbers ... 
- 这种方法在受到.NET版本和访问注册表权限时,是最佳解决方案,虽然代码看起来很多,不过下面的类直接拿走用就可以了。
			public class FileContentType { private static IDictionary<string, string> _mappings = ne ... 
- LVS负载均衡中arp_ignore和arp_annonuce参数配置的含义
			先简单的介绍下关于LVS负载均衡 LVS(Linux Virtual Server)Linux服务器集群系统 针对高可伸缩,高可用服务的需求,给予IP层和内容请求分发的负载均衡调度解决方法,并在Li ... 
