0

我想让我的组件控制器的一些选定属性在嵌入到该组件的内容范围内可见。我正在尝试按照 Tero Parviainen 的 angular 1.4 示例执行此操作:http://jsbin.com/pibuqa/1/edit?html,css,js,output 来自http://teropa.info/blog/2015 /06/09/transclusion.html)。

不过,我在 Angular 1.5.8 中没有任何运气。据我所知,我在 transclude 克隆附加功能中对 $scope 所做的更改无效:http ://plnkr.co/edit/Mr69lBZJswaM6MSyWwTP?p=preview

我的目标:

<my-component> <div>{{something}} will be set to "blah"</div> <my-component>

component('myComponent', { transclude: true, template: '<div ng-transclude></div>', controller: function ($transclude) { $transclude(function (transEl, transScope) { transScope.something = "blah"; } }})

编辑:我相信我需要自己插入嵌入的文本,而不是在做这种事情时依赖 ng-transclude。(ng-transclude 自己嵌入内容。我的克隆附加功能正在运行并且没有有效地做任何事情,因为它没有操纵 dom。)

4

1 回答 1

1

您看到的问题源于您在模板中使用 ng-transclude ,然后在控制器中调用 $transclude 。内容已绑定到模板,并且某些属性已设置在不同的范围内。您需要从模板中删除 ng-transclude 并将内容附加到您的 cloneLinkingFn 中:

$transclude(function (transEl, transScope) {
        // Set something property
        transScope.something = "something else";
        // Now append transcluded element to your element
        $element.append(transEl);
    });

这是更新的 plnkr:http ://plnkr.co/edit/4WWmyPcYuGmGh4dPGNmi?p=preview

于 2016-08-10T00:00:51.790 回答