javascript - Angular 指令 - 两次包含相同内容

标签 javascript angularjs angularjs-directive

我正在尝试创建一个新指令,该指令需要获取元素的内部 HTML 并使用嵌入将其放入模板中的两个不同位置。当我尝试使用嵌入函数两次,或者使用一次并附加克隆的内容两次时,我遇到了错误,正如您在下面的代码中看到的那样:

.directive('toolbar', function () {

    return {

        restrict: 'E',
        scope: {},
        transclude: true,
        template:   '<toolbar-main><div transclude-main></div></toolbar-main>' + 
                    '<toolbar-overflow><div transclude-overflow></div></toolbar-overflow>',
        link: function (scope, element, attrs, controller, transclude) {

            transclude(function (clone) {
                 element.find('[transclude-main]').replaceWith(clone);
                 element.find('[transclude-overflow]').replaceWith(clone);
            });

        }


    };


});

是否有可能做我想做的事情?

最佳答案

如果您想拥有两个副本,则需要附加 clone 的克隆版本,否则第二个 replaceWith 只会移动 clone 元素从之前的位置到新的位置:

.directive('toolbar', function() {
    return {
        restrict: 'E',
        scope: {},
        transclude: true,
        template: 
            '<toolbar-main><div ng-transclude></div></toolbar-main>' +
            '<toolbar-overflow><div ng-transclude></div></toolbar-overflow>',
        link: function(scope, element, attrs, controller, transclude) {
            // nothing here
        }
    };
});

关于javascript - Angular 指令 - 两次包含相同内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35209469/

相关文章:

javascript - 自动向下滚动 angularjs

angularjs - NgMask - 支持 2 位小数

javascript - 未捕获的类型错误 : Property '$' of object [object global] is not a function?

javascript - Node - 无效的数组长度

javascript - 指令未以 Angular 显示

angularjs - 尝试使用 ng-repeat 创建 ng-model 绑定(bind)

javascript - ui-mask 和 $parser/$formatters 不能在同一指令中工作

javascript - 为什么我的所有 DOM 元素属性都返回为空字符串?

javascript - 使用 jquery 隐藏范围不起作用

javascript - Angular 过滤