Transclude 未注入链接功能

Posted

技术标签:

【中文标题】Transclude 未注入链接功能【英文标题】:Transclude not injected in link function 【发布时间】:2015-09-18 06:45:02 【问题描述】:

这是我的代码

'use strict';
angular.module('app')
    .directive('item'
            , ["$timeout"
            , "$Service"
            , function(
                $timeout
                , $utils) 
    return 
        restrict: 'A',
        scope: 
            item: '=',
        ,
        transclude: true,
        link: function(scope, element, attrs, ctrl, transclude)
        ,
        templateUrl: $fsUtils.getRelativeUrl('templates/item.html'),
        controller: 'ItemCtrl', 
    ;
]);

我的 index.html:

<item><div>Transcluded content.</div></item>

transclude 变量为undefined,ctrl 变量为proto__: Object。 我需要将父范围注入到嵌入范围中。 transclude 变量未定义。我哪里错了。

我的角度版本是 1.1.5

谢谢。

【问题讨论】:

我可以看到item.html吗? 【参考方案1】:

您正在寻找的是 transcludeFn。试试这个:

transclude: true,
transcludeFn: function ()  /*do your stuff here*/ ,
...
link: function(scope, element, attrs, controller, transcludeFn)

要在链接功能中访问控制器,您可以这样做:

var controller = scope.controller;

【讨论】:

我知道 transclude 是由 angular 预定义的,在我的情况下,它在我的链接函数中未定义。这就是问题所在。 我的问题是为什么要在链接功能中访问它?它是指令定义的一部分,它会完成它的工作。您是否尝试有条件地打开/关闭嵌入? 我想要这个this 您找到解决方案了吗?由于某种原因,我目前遇到了同样的问题...这通常可以正常工作,但我的代码必须搞砸了,但看不到什么!

以上是关于Transclude 未注入链接功能的主要内容,如果未能解决你的问题,请参考以下文章

何时在 Angular 中使用 transclude 'true' 和 transclude 'element'?

AngularJs 中的transclude的理解

什么是 ng-transclude?

AngularJS - 将工厂注入指令的链接功能

JQuery 更新后 ng-transclude 不再起作用

html Angular Transclude Post