AngularJs自定义指令详解(2) - template

一些用于定义行为的指令,可能不需要使用template参数。

当指定template参数时,其值可以是一个字符串,表示一段HTML文本,也可以是一个函数,这函数接受两个参数:tElement和tAttrs。

前者用的较为普遍,而且也好理解。后者暂不理会。

下面是一个例子,在模板中使用rootScope里定义的变量:

复制代码
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <script src="../lib/angular-1.3.16/angular.min.js"></script>
    <script src=""></script>
    <title></title>
    <script language="JavaScript">
        angular.module('app',[])
                .run(function($rootScope){
                    $rootScope.greeting = 'World';
                })
                .directive('myDirective',function(){
                    return{
                        template:'Hello {{greeting}}!'

                    };
                });
    </script>
</head>
<body ng-app="app">
<div my-directive></div>
</body>
</html>
复制代码

审查元素看看:

果然,在解析指令里的greeting变量时,AngularJs会跑到$rootScope里找。

那么,加个控制器试试看:

复制代码
        angular.module('app',[])
                .run(function($rootScope){
                    $rootScope.greeting = 'World';
                })
                .controller('myController',function($scope){
                    $scope.greeting = 'AngularJs';
                })
                .directive('myDirective',function(){
                    return{
                        template:'Hello {{greeting}}!'

                    };
                });
复制代码

 

别忘了:

<div ng-controller="myController" my-directive></div>

在浏览器中查看,输出的是:

Hello AngularJs!

可见指令使用的是控制器创建的子作用域$scope

posted @ 2017-07-13 15:18  铭绘  阅读(922)  评论(0编辑  收藏  举报