惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
雷峰网
雷峰网
GbyAI
GbyAI
Hugging Face - Blog
Hugging Face - Blog
N
Netflix TechBlog - Medium
博客园 - 聂微东
Y
Y Combinator Blog
罗磊的独立博客
博客园_首页
小众软件
小众软件
有赞技术团队
有赞技术团队
爱范儿
爱范儿
F
Fortinet All Blogs
C
Check Point Blog
Google DeepMind News
Google DeepMind News
云风的 BLOG
云风的 BLOG
Apple Machine Learning Research
Apple Machine Learning Research
M
MIT News - Artificial intelligence
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
aimingoo的专栏
aimingoo的专栏

博客园 - 开发手游啦啦啦

用TypeScript开发爬虫程序 ABP导航源码分析 ABP的语言切换 AngularJs自定义指令详解(10) - 执行次序 AngularJs自定义指令详解(9) - terminal AngularJs自定义指令详解(8) - priority AngularJs自定义指令详解(6) - controller、require AngularJs自定义指令详解(5) - link AngularJs自定义指令详解(4) - transclude AngularJs自定义指令详解(3) - scope AngularJs自定义指令详解(2) - template AngularJs自定义指令详解(1) - restrict ABP的Zero Sample ABP的工作单元 ABP的数据过滤器(Data Filters) ABP的事件总线和领域事件(EventBus & Domain Events) 初入Cocos2d-x 2.2 quick-cocos2d-x之testlua之VisibleRect.lua quick-cocos2d-x之testlua之mainMenu.lua
AngularJs自定义指令详解(7) - multiElement
开发手游啦啦啦 · 2015-07-05 · via 博客园 - 开发手游啦啦啦

multiElement不太常用,从下面这个例子可以大致看出它的作用:

<!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">
        var app = angular.module("app", []);
        app.directive('myDirective',function () {
            return{
                multiElement:true,
                link:function(scope,element,attrs){
                    console.log(element);
                }
            };
        });
    </script>
</head>
<body ng-app="app">
<span my-directive-start></span>
<span my-directive-end></span>
</body>
</html>

在Chrome浏览器中审查元素,看看控制台输出:

由此可知传给连接函数的element不是单个元素,而是3个,包括两个span和一个回车符。

实际上,我们把HTML代码改成:

<my-directive><span></span>
<span></span></my-directive>

控制台输出:

这时候我们仍然可以在childNodes中找到它们。

所以把multiElement设为true的目的,仅仅是引入my-directive-start、my-directive-end这两个标记,在某些时候有利于我们书写。

现在看看AngularJs内置指令ngRepeat(可以使用ng-repeat-start和ng-repeat-end)类似的做法:

<!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">
        var app = angular.module("app", []);
        app.run(function ($rootScope) {
            $rootScope.list = [{name: '张三', age: 26, gender: ''}, {name: '李四', age: 24, gender: ''}];
        });
    </script>
</head>
<body ng-app="app">
<table border="1">
    <tbody>
    <tr ng-repeat-start="l in list">
        <td>{{l.name}}</td>
        <td></td>
    </tr>
    <tr ng-repeat-end>
        <td>{{l.age}}</td>
        <td>{{l.gender}}</td>
    </tr>
    </tbody>
</table>
</body>
</html>

输出:

如果没有ng-repeat-start和ng-repeat-end,用ng-repeat输出上面的东西,很吃力。

 我们在ng-repeat-start和ng-repeat-end之间可以任意胡来,例子:

<!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">
        var app = angular.module("app", []);
        app.run(function ($rootScope) {
            $rootScope.list = [{name: '张三', age: 26, gender: ''}, {name: '李四', age: 24, gender: ''}];
        });
    </script>
</head>
<body ng-app="app">
<table border="1">
    <tbody>
    <tr ng-repeat-start="l in list">
        <td>{{l.name}}</td>
    </tr>
    <tr>
        <td>{{l.age}}</td>
    </tr>
    <tr ng-repeat-end>
        <td>{{l.gender}}</td>
    </tr>
    </tbody>
</table>
</body>
</html>

输出: