相关疑难解决方法(0)

你究竟对transclude函数和克隆链接函数做了什么?

指令Angular docs,我看到compile函数有3个参数,其中一个是transclude.文档提供的唯一解释是:

transclude - 一个transclude链接函数:function(scope,cloneLinkingFn).

我试图了解你在克隆链接功能中会做些什么.我甚至不知道哪些参数传递给它.我找到了一个示例,其中有一个参数被称为cloneHTML元素.还有其他参数吗?这究竟是哪个HTML元素?我也在考虑使用transclude: 'element'我的指令.执行这些问题的答案时,用改变'element'来代替true

我用简单的例子来理解翻译,但我似乎无法找到更复杂的例子,尤其是transclude: 'element'.我希望有人能对这一切提供更全面的解释.谢谢.

angularjs

70
推荐指数
1
解决办法
4万
查看次数

Angularjs:transclude指令模板

如何在下面的情况下使用包含.目的是在html(partials)文件中使用标记,而不是在模板中定义它(在指令内).

我在这里找到了一个很棒的树指令.(来源)原文:http://jsfiddle.net/n8dPm/

我没有在指令中定义模板,而是尝试使用已转换的内容.我还将Angular更新为1.2.0.rc2.更新:http://jsfiddle.net/aZx7B/2/

得到以下错误

TypeError:对象[object Object]的属性'$ transclude'不是函数

码:

module.directive("tree", function($compile) {
    return {
        restrict: "E",
        transclude: true,
        scope: {family: '='},
        template:       
            '<ul>' + 
                '<li ng-transclude></li>' +
                '<li ng-repeat="child in family.children">' +
                    '<tree family="child"></tree>' +
                '</li>' +
            '</ul>',
        compile: function(tElement, tAttr) {
            var contents = tElement.contents().remove();
            var compiledContents;
            return function(scope, iElement, iAttr) {
                if(!compiledContents) {
                    compiledContents = $compile(contents);
                }
                compiledContents(scope, function(clone, scope) {
                         iElement.append(clone); 
                });
            };
        }
    };
});

<div ng-app="myapp">
    <div ng-controller="TreeCtrl"> …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

angularjs ×2

javascript ×1