在指令Angularjs中传递元素id

时间:2017-09-27 13:22:05

标签: javascript html angularjs angularjs-directive

这是我将相同文本复制到剪贴板的指令

mainApp.directive('ngCopyable', function() {
    return {
        restrict: 'A',
        link:link
    };
    function link(scope, element, attrs) {
        element.bind('click',function(){
            var text = document.getElementById('id-my-div');
            var range = document.createRange();
            range.selectNode(text);
            window.getSelection().removeAllRanges();
            window.getSelection().addRange(range);
            var successful = document.execCommand('copy');

            var msg = successful ? 'successful' : 'unsuccessful';
            //console.log('Copying text command was ' + msg);
            window.getSelection().removeAllRanges();
        });
    }

});

它正在发挥作用。我在图标

中使用此指令
<span ng-copyable>
  <i class="zmdi zmdi-copy"></i>
</span>

当我单击图标时,成功复制了ID为id-my-div的div内的文本。问题是id不是动态的。这样只会复制该元素。是否可以更改指令传递我要复制的元素的id?

1 个答案:

答案 0 :(得分:0)

您可以传递指令中的任何属性

<span ng-copyable>
  <i class="zmdi zmdi-copy" elementId="myId"></i>
</span>

并且在你的指令中你可以通过

var id = element.attrs('elementId')