在Angularjs中使用directive自定义指令实现attribute的继承

一、Html代码:

 1 <!DOCTYPE html>
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5     <title></title>
 6     <script src="../../Content/Plugins/Angular/angular.min.js"></script>
 7 </head>
 8 <body ng-app="mainApp" ng-controller="mainController">
 9     <quber-grid style="border: 1px solid #f00;" title="qubernet"></quber-grid>
10 </body>
11 </html>

 

二、tmp.html文件

1 <div quber-grid-attr>
2     我是测试的模板内容!
3 </div>

 

 

三、Js代码:

 

 1     //初始化Angular对象
 2     var myNg = angular.module('mainApp', []);
 3 
 4     myNg.directive('quberGrid', function () {
 5         return {
 6             restrict: 'EA',
 7             replace: true,//移除<quber-grid>标签
 8             templateUrl: 'tmp.html',
 9             link: function (sco, ele, attr) {
10                 //通知下属DOM,执行名为sendChildGridAttr的事件
11                 sco.$broadcast('sendChildGridAttr', attr);
12             }
13         };
14     });
15     myNg.directive('quberGridAttr', function () {
16         return {
17             restrict: 'A',
18             link: function (sco, ele, attr) {
19                 sco.$on('sendChildGridAttr', function (event, data) {
20                     angular.forEach(data, function (val, key, obj) {
21                         if (key != '$attr' && key != '$$element') {
22                             //设置标签属性和值
23                             attr.$set(key, val);
24                         }
25                     });
26                 });
27             }
28         };
29     });
30 
31     myNg.controller('mainController', function ($scope) { });    

 

 

效果如下所示:

转载于:https://www.cnblogs.com/qubernet/p/5368937.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值