码迷,mamicode.com
首页 > 其他好文 > 详细

简话Angular 06 Angular自定义指令

时间:2015-07-21 20:15:28      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:

一句话: 直接return link函数可以解决大多数问题,无须死扣用法

 

1. 上源码 (dom操作,事件,css,mode操作全包括了)

 1 <h3>Custom directive, with dom operation, events, css and scope model operation</h3> 
 2         
 3 
 4         <div ng-controller="DateController">
 5           Date format: <input ng-model="format"> <hr/>
 6           Current time is: <span my-current-time="format"></span>
 7         </div>
 8 
 9 
10 
11         <script>
12         var myApp = angular.module(myApp, []);
13 
14         myApp.controller(DateController, function($scope) {
15             $scope.format = "M/d/yy h:mm:ss a";
16         });
17         
18         myApp.directive(myCurrentTime, [$interval, dateFilter, function($interval, dateFilter) {
19             function link(scope, element, attrs) {
20                 var format, timeoutId;
21 
22                 function getRandomColor() {
23                     var letters = 0123456789ABCDEF.split(‘‘);
24                     var color = #;
25                     for (var i = 0; i < 6; i++ ) {
26                         color += letters[Math.floor(Math.random() * 16)];
27                     }
28                     return color;
29                 }
30 
31                 function updateTime() {
32                     element.text(dateFilter(new Date(), format));
33                     element.css({background-color: getRandomColor()});
34                 }
35 
36                 scope.$watch(attrs.myCurrentTime, function(value) {
37                     format = value;
38                     updateTime();
39                 });
40 
41                 element.on($destroy, function() {
42                     $interval.cancel(timeoutId);
43                 });
44 
45                 element.on(click, function(){
46                     alert(Date format is changing to yyyy/MM/dd hh);
47                     scope.format = "yyyy/MM/dd hh " + getRandomColor();
48                 });
49 
50                 // start the UI update process; save the timeoutId for canceling
51                 timeoutId = $interval(function() {
52                     updateTime(); // update DOM
53                 }, 1000);
54             }
55 
56             return {
57                 link: link
58             };
59         }]);
60         </script>
61     </div>

 

2. 在线查看运行效果

http://jimuyouyou.github.io/angular-bootstrap-rest-seed/examples/angular/6-custom-directive.html

 

3. 项目地址

github: https://github.com/jimuyouyou/angular-bootstrap-rest-seed

简话Angular 06 Angular自定义指令

标签:

原文地址:http://www.cnblogs.com/meteorcn/p/4665402.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!